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:55:24 CEST 2004


Thomas Richter wrote:
> du redest aber die ganze zeit ueber den "stop" button im browser...

Als Analogie zu dem was ich erreichen will.

> vielleicht ist dann folgendes fuer dich interessant:

> http://www.php.net/manual/de/features.connection-handling.php
[Auszug aus dem Manual gesnippt]

Ich möchste ja nicht abfragen, ob der User STOP gedrückt hat, sondern
einen ähnlichen Zustand auf der PHP Seite erzeugen.

Ich habe einen Programmpart, der sehr Zeitintensiv ist. Der Browser
selbst sollte allerdings recht schnell bedient werden. Die
Berechnungen können also Problemlos im "hintergrund" ohne Ausgabe
weiterlaufen.

> ich hoffe die situation ist jetzt etwas klarer!

Jein ;-)

Die Dokumentation ist ungenau im Zusammenhang zwischen exit(); und
register_shutdown_function();

Ereignisliste:
1. Apache erhält Request
2. Apache ruft die PHP Seite auf
3. PHP arbeitet die Seite ab
4. Apache erhält Abbruchsignal durch User
5. PHP erkennt Abbruch und führt registrierte Funktionen aus.

Ich möchte nun das Ereignis #4 künstlich herbeiführen. Da war für mich
der mehr oder weniger logische Schluss die() bzw. exit() aufzurufen.
Damit wird das Programm beendet. PHP ruft entsprechend die
registrierter Funktionen auf.

Scheinbar scheint das in PHP so realisiert zu sein, das exit() bzw.
die() aufgeschoben wird, bis alle Shutdownfunktionen abgearbeitet
sind. Das ist entweder ein Bug, oder eben nicht erwähnt.

In diesem Fall bleibt mir wohl nur das Spawnen eines separaten
PHP-Processes, das die rechenintensiven Sachen durchführt, denn den
Browser des User warten zu lassen (in meinem Fall ein anderes
PHP-Script) ist nicht praktikabel.

> thomas

-- 
Andreas Lange


php::bar PHP Wiki   -   Listenarchive