[PHP5] ticks - Verständnisfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [PHP5] ticks - Verständnisfrage

    Ahoy,

    ich arbeite derzeit mit PHP ticks. Hier mal mein Beispielscript:

    PHP-Code:
    <?php

        
    // Tick-Funktion definieren
        
    function checkUsage() {
            echo 
    '.';
        }

        
    // Tick-Funktion deklarieren
        
    register_tick_function('checkUsage');

        
    // Ticks deklarieren
        
    declare(ticks 1);

        for(
    $i 0$i 1000$i++) {
            echo 
    '|';
        }

    ?>
    Wie ihr sehen könnt, wird für jeden Tick ein Punkt ausgegeben und für jeden Schleifendurchlauf ein seknrechter Strich. Wenn Ihr das ausführt ([color=red]ACHTUNG: Lest euch bitte die Funktionsbeschreibung zu declare_tick_function auf php.net durch![/color]) seht ihr, dass vor dem ersten Schleifendurchlauf schon mehrere Interpreterschritte stattgefunden haben. Soweit auch nicht weiter verwunderlich. Wenn ich das Script aber dannach erneut ausführe, finden immer mehr Interpreterschritte zwischen den Schleifendurchläufen statt. Erst wenn ich ein paar Sekunden warte pendelt es sich wieder in einen Normalzustand ein.

    Kann mir das irgendwer erklären? Ich steig da nicht so ganz hinter.

    Cheers
    Zuletzt geändert von unset; 26.03.2008, 14:47.
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

  • #2
    Moin,

    Lokal unter Xampp Windows stürzt der Apache immer ab, wenn ich das Beispielscript teste.

    vllt. ein Bug?

    Kommentar


    • #3
      @DerSchonWieder
      register_tick_function() should not be used with threaded web server modules. Ticks are not working in ZTS mode and may crash your web server.
      Also vermute ich mal, dass genau dies bei deinem Webserver passiert....
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Original geschrieben von jahlives
        @DerSchonWieder

        Also vermute ich mal, dass genau dies bei deinem Webserver passiert....
        Ich hebe mal meine Warnung hervor!
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          PHP-Code:
          <?php

              
          // Tick-Funktion definieren
              
          function checkUsage() {
                  echo 
          '.';
              }

              
          // Tick-Funktion deklarieren
              
          register_tick_function('checkUsage');

              
          // Ticks deklarieren
              
          declare(ticks 1){
                for(
          $i 0$i 1000$i++) {
                    echo 
          '|';
                }
              }

          ?>
          ungetestet


          UPDATE
          Hab das abgeänderte Beispiel von mir grad mal getestet - gleiches Verhalten wie bei dir.
          Zuletzt geändert von Quetschi; 26.03.2008, 16:47.
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Ich hab mir mal den entsprechenden PHP Code angeschaut, dort ist ZEND_TICKS_SPEC_CONST_HANDLER als opcode_handler eingetragen - von dort aus werden dann die registrierten Funktionen (wie in den Kommentaren schon festgestellt) nach einander ausgeführt. Warum die Anzahl der Ticks pro Operation so schwankt ist eine allerdings eine gute Frage (das Problem tritt bei meinen Test genauso auf).
            Zuletzt geändert von tontechniker; 26.03.2008, 19:15.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar

            Lädt...
            X