phpbar.de logo

Mailinglisten-Archive

[php] register_shutdown_function ...

[php] register_shutdown_function ...

Andreas Lange andreas.lange at haas-media.de
Fre Apr 23 15:11:03 CEST 2004


Michael Rappert wrote:
> Hallo Andreas Lange,

> Am Freitag, 23. April 2004 um 12:58 schrieben Sie:

AL>> Das scheint nicht zu funktionieren. Der Browser wartet fleissig die 10
AL>> Sekunden auf das Ende des Scripts. Meine Erwartung war, das mit dem
AL>> die() das Script für den Browser beendet ist und dann die Ausführung
AL>> ende durchgeführt wird.
AL>> Ist dieses Verhalten normal?

> In meinen Augen schon, da PHP die Befehle von oben nach unten
> abarbeitet. Der Befehl die() wird ausgeführt, wenn die übergebene
> function(ende) mit seinem sleep fertig ist.
> Es ist ja auch keine anderslautende Bedingung formuliert.

Hmmm ...

Aus dem Manual:
Registers the function named by function to be executed
when script processing is complete.

In dem Fall endet das Script processing mit dem die(); Befehl. Ergo,
an der Stelle müsste auch die Sache für den Browser gefrühstückt sein,
denn alles was dann innerhalb der registrierten Funktion passiert wird
ja nicht mehr an den Browser weitergeleitet.

Interessant ist ja, die Funktion eigentlich dazu gedacht ist,
bereinigende Sachen noch durchzuführen, wenn es zu einem unterwarteten
Abruch kommt (durch den User, oder Timeout). Im Prinzip bin ich mir
nicht mehr 100% sicher, das die(); bzw. exit(); tatsächlich das
gleiche bewirkt, wie ein Klick auf den STOP Button. (Ja, die und exit
können zwar noch was ausgeben, aber ansonsten hätte ich erwartet, das
das gleiche passiert).

Aus dieser Unsicherheit herraus habe ich ja noch einen weiteren Reply
auf das Thema geschrieben, in dem der Sinn und Zweck diese "Krücke"
beschrieben ist. Vielleicht gibt es ja eine ähnliche Lösung, die
ähnlich simpel ist und vor allem funktioniert ;-)

-- 
Andreas Lange


php::bar PHP Wiki   -   Listenarchive