Thomas Schmieder: max_execution_time

Hallo,

Versuch macht kluch...

Welche Zeit wird von max_execution_time beeinflusst?
Wie wirkt sich sleep() darauf aus? Zählt die Schlafzeit mit?

Ich behaupte, dass sie nicht mitzählt, sondern nur die reine Prozessorzeit für die Ausführung der andren Statements.

Weiß einer was Genaues?

Grüße

Tom

  1. Hi Tom,

    Wie wirkt sich sleep() darauf aus? Zählt die Schlafzeit mit?

    Nein, die Zeit, die mit sleep() verbraucht wird, zählt nicht.

    Ich behaupte, dass sie nicht mitzählt, sondern nur die reine Prozessorzeit für die Ausführung der andren Statements.

    richtig :-)

    Weiß einer was Genaues?

    Ich kann leider nur das, was Du geschrieben hast, aus allgemeiner Efahrung bestätigen. Wenn ich lange laufende PHP-Skripts habe, dann arbeite ich für gewöhnlich mit set_time_limit, da ist auf jeden Fall sicher, daß der "Auszähler" für PHP wieder bei Null anfängt, bei sleep erinnere ich mich dunkel daran, daß das bei PHP3 unter Windows mal nicht funktionert hat, d.h. der Zähler wurde nicht zurückgesetzt, unter Unix war es wohl schon immer so, daß sleep() die verbrauchte Zeit auf 0 zurückstellt (auch die, die das Skript vorher verbraucht hat), so daß man damit einen Timeout vermeiden kann.
    Aber, naja, es ist 3:50 ;-)...

    Viele Grüße
    Stephan

    1. Hallo Stephan,

      danke für den Hinweis. Dann ist es ja NOCH anders, aks ich vermutet habe. Möchte fast die Frage stellen: is this bug a feature?

      Bin gestern Abend nur durch Zufall drauf gestoßen, als ich im anderen Thread die flock()-Funktion untersucht habe  http://forum.de.selfhtml.org/?m=143826&t=26314 und etwas Zeit brauchte. Nur leider hörte das Skript nicht nach 75Sek auf.

      Was für ein Vorgang läuft da eigentlich ab, wenn man dann den Stop(p)-Button vom Browser drückt?

      Tom

      1. Hallo Thomas,

        Bin gestern Abend nur durch Zufall drauf gestoßen, als ich im anderen Thread die flock()-Funktion untersucht habe  http://forum.de.selfhtml.org/?m=143826&t=26314 und etwas Zeit brauchte. Nur leider hörte das Skript nicht nach 75Sek auf.

        Dann bau doch eine Sperre ein, dass sich dein Script selbst nach soundsoviel Sekunden beendet. Dazu hilft Dir warscheinlich http://www.php.net/manual/en/function.microtime.php

        Was für ein Vorgang läuft da eigentlich ab, wenn man dann den Stop(p)-Button vom Browser drückt?

        Die HTTP-Verbindung zum Server wird unterbrochen. In PHP kannst Du dieses Ereignis mit einer Shutdown-Funktion abfrangen: http://www.php.net/manual/en/function.register-shutdown-function.php

        Grüße,

        Christian

        1. Hallo Usammen, hallo Christian,

          Was für ein Vorgang läuft da eigentlich ab, wenn man dann den Stop(p)-Button vom Browser drückt?

          Die HTTP-Verbindung zum Server wird unterbrochen. In PHP kannst Du dieses Ereignis mit einer Shutdown-Funktion abfrangen: http://www.php.net/manual/en/function.register-shutdown-function.php

          Jetzt sitze ich aber schön in der Tinte. Du sagst mir hier, "die HTTP-Verbindung" wird unterbrochen. Ich weiß aber aus ganz vielen anderen Diskussionen, dass http verbindungs- und zustandslos arbeitet. Außerdem weiß ich aber auch, dass der Button eine Wirkung hat. Wem soll ich nun glauben ;-)

          Also mal im Ernst. Ich würde es schon gerne etwas genauer wissen wollen, was der Button macht. Ich müsste mich also am besten hinsetzen, und mein Traficlog beobachten (Traffic analysieren), während ich auf den Stopp-Button klicke. Habe nur leider keinen Analyser, der mir die Packete zerpflückt.

          Mich interessiert, wie kann der Client mit dem von ihm auf dem Server angestoßenen Prozess in Kontakt treten, also "Verbindung" aufnehmen? Bzw. dafür sorgen, dass er abgebrochen wird...

          Äusserst neugierige Grüße aus http://www.braunschweig.de

          Tom

          1. Hallo Thomas,

            Jetzt sitze ich aber schön in der Tinte. Du sagst mir hier, "die HTTP-Verbindung" wird unterbrochen. Ich weiß aber aus ganz vielen anderen Diskussionen, dass http verbindungs- und zustandslos arbeitet. Außerdem weiß ich aber auch, dass der Button eine Wirkung hat. Wem soll ich nun glauben ;-)

            Moment: Verbindung != Verbindung! s.U.

            Also mal im Ernst. Ich würde es schon gerne etwas genauer wissen wollen, was der Button macht. Ich müsste mich also am besten hinsetzen, und mein Traficlog beobachten (Traffic analysieren), während ich auf den Stopp-Button klicke. Habe nur leider keinen Analyser, der mir die Packete zerpflückt.

            Also: HTTP ist ein Protokoll, dass auf TCP/IP aufsetzt. IP dürfte klar sein, was das macht (Adressen, Routing, etc.) TCP hat im Wesentlichen folgende Aufgaben:

            * Sicherstellung der Ankunft von Paketen
              * Sicherstellung der Reihenfolge der Pakete
              * Zustandebringen einer zweikanäligen Verbindung
              * Unterteilung eines Rechners in sog. Ports

            Wenn man beim Browser auf Stopp drückt, wird die TCP-Verbindung gekappt, mit dem Betriebsystemaufruf close(). Durch diesen Aufruf wird ein Paket mit dem FIN - Flag geschickt. Dieses muss die Gegenseite mit einem Paket mit dem FIN/ACK-Flag bestätigen. (wenn ich mich richtig erinnere) Das hat nichts direkt mit HTTP zu tun.

            Grüße,

            Chrisitan

            1. Hallo Christian,

              nun wird einiges klarer. Die Packete habe ich ja schon oft genug im Log betrachten dürfen. Das sind dann also die sogenannten "Page-Lefts" oder? ie. dass dieser Vorgang auch beim Wechsel von Seiten, die noch nicht vollständig übertragen wurden, stattfindet.

              Jetzt sitze ich aber schön in der Tinte. Du sagst mir hier, "die HTTP-Verbindung" wird unterbrochen. Ich weiß aber aus ganz vielen anderen Diskussionen, dass http verbindungs- und zustandslos arbeitet. Außerdem weiß ich aber auch, dass der Button eine Wirkung hat. Wem soll ich nun glauben ;-)

              Moment: Verbindung != Verbindung! s.U.

              Also mal im Ernst. Ich würde es schon gerne etwas genauer wissen wollen, was der Button macht. Ich müsste mich also am besten hinsetzen, und mein Traficlog beobachten (Traffic analysieren), während ich auf den Stopp-Button klicke. Habe nur leider keinen Analyser, der mir die Packete zerpflückt.

              Also: HTTP ist ein Protokoll, dass auf TCP/IP aufsetzt. IP dürfte klar sein, was das macht (Adressen, Routing, etc.) TCP hat im Wesentlichen folgende Aufgaben:

              * Sicherstellung der Ankunft von Paketen
                * Sicherstellung der Reihenfolge der Pakete
                * Zustandebringen einer zweikanäligen Verbindung
                * Unterteilung eines Rechners in sog. Ports

              Wenn man beim Browser auf Stopp drückt, wird die TCP-Verbindung gekappt, mit dem Betriebsystemaufruf close(). Durch diesen Aufruf wird ein Paket mit dem FIN - Flag geschickt. Dieses muss die Gegenseite mit einem Paket mit dem FIN/ACK-Flag bestätigen. (wenn ich mich richtig erinnere) Das hat nichts direkt mit HTTP zu tun.

              Ich mag hier aus dem Zitat gar nichts löschen. Falls keine Einewände mehr kommen, hätte ich alles schön beisammen...

              Liebe Grüße

              Tom

          2. Hi Tom, Hi Christian

            Was für ein Vorgang läuft da eigentlich ab, wenn man dann den Stop(p)-Button vom Browser drückt?

            Die HTTP-Verbindung zum Server wird unterbrochen. In PHP kannst Du dieses Ereignis mit einer Shutdown-Funktion abfrangen: http://www.php.net/manual/en/function.register-shutdown-function.php

            Jetzt sitze ich aber schön in der Tinte. Du sagst mir hier, "die HTTP-Verbindung" wird unterbrochen. Ich weiß aber aus ganz vielen anderen Diskussionen, dass http verbindungs- und zustandslos arbeitet. Außerdem weiß ich aber auch, dass der Button eine Wirkung hat. Wem soll ich nun glauben ;-)

            Das hab ich gestern abend erfahren, du erinnerst dich?
            Wie Christian auch schon versucht hat zu erklären:
            Der Stop-Button tut nix anderes als den TCP-Stream zu unterbrechen, vai close(); wie Christian anmerkt. (Das geht auch mit PHP!, z.B. bei file-operationen via HTTP)

            das ganze ist bei mir gestern halt auch passiert, zwar bugmäßig, aber nach dem schema, und zwar präzise nach dem ersten Paket... hätten wir hier ein gutes PHP-Forum, so hätte es auf connection_close = true reagieren können, und AFAIK eine Fehlermeldung ausgeben in der Form "Sie haben Ihre Daten nicht richtig abgeschickt", aber das kann Perl nu mal nicht :)
            (BTW: es hätte mir die suche enorm erleichtert =)

            Also mal im Ernst. Ich würde es schon gerne etwas genauer wissen wollen, was der Button macht. Ich müsste mich also am besten hinsetzen, und mein Traficlog beobachten (Traffic analysieren), während ich auf den Stopp-Button klicke. Habe nur leider keinen Analyser, der mir die Packete zerpflückt.

            nix pakete zerpflücken. da wird ein close-paket geschickt, wie christian sagt und gut is.

            Mich interessiert, wie kann der Client mit dem von ihm auf dem Server angestoßenen Prozess in Kontakt treten, also "Verbindung" aufnehmen? Bzw. dafür sorgen, dass er abgebrochen wird...

            nein, einen abbruch kann man AFAIK nicht abbrechen.

            Fabian