SELFPHP

SELFPHP-Druckversion
Original Adresse dieser Seite:
http://www.selfphp.de/praxisbuch/praxisbuch.php?group=36
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.de
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de


Überprüfung des Verbindungsstatus


Ein PHP-Skript ist in der Lage, den Verbindungsstatus zu überprüfen und gegebenenfalls darauf zu reagieren. PHP unterscheidet zwischen drei Zuständen:

NORMAL = 0
ABBORTED = 1
TIMEOUT = 2

Der übliche Zustand während der Verarbeitung eines Skripts ist NORMAL. Wird die Verbindung jedoch unterbrochen, etwa clientseitig durch Klicken des Abbruch-Schalters, liefert die entsprechende Funktion den Status ABBORTED. Bei Überschreitung eines festgelegten Zeitlimits bricht PHP die Ausführung eines Skripts auch selbständig ab. In diesem Fall wird der Status TIMEOUT übergeben. Zur Ermittlung und Bearbeitung des aktuellen Verbindungsstatus können Sie die folgenden Funktionen einsetzen:

FunktionBedeutung
connection_aborted()Prüft, ob die Verbindung abgebrochen wurde.
connection_status()Ermittelt den Status der Verbindung.
connection_timeout()Prüft, ob die Verbindung das Zeitlimit überschritten hat und beendet wurde.
ignore_user_abort()Arbeitet das Skript weiter ab, auch wenn der Anwender den Abbrechen-Schalter gedrückt hat. Es erfolgt hierbei jedoch keine Ausgabe an den Browser mehr.
register_shutdown_function()Bestimmt eine Funktion, die beim Beenden eines PHP-Skripts ausgeführt wird.


Eine Unterbrechung aufgrund eines TIMEOUT kann beispielsweise auftreten, wenn das Skript auf die Antwort einer Datenbankabfrage warten muss. Voreingestellt sind 30 Sekunden. Sie können diesen Wert in der Konfigurationsdatei php.ini mithilfe der Option max_execution_time heraufsetzen. Wenn PHP nicht im sicheren Modus (safe mode) arbeitet, lässt sich zu diesem Zweck auch die Funktion set_time_limit() einsetzen.


Shutdown-Funktion

Bricht die Verbindung ab, da der Anwender den Abbrechen-Schalter gedrückt hat, wird üblicherweise auch die Ausführung des Skripts abgebrochen. Bei bestimmten Operationen kann es jedoch sinnvoll sein, das Skript vollständig abzuarbeiten, etwa um noch offene Dateien zu schließen. Für Skripts, die solche kritischen Operationen enthalten, können Sie daher die Funktion ignore_user_abort() nutzen, um die weitere Abarbeitung des Skripts zu erzwingen. Alternativ besteht auch die Möglichkeit, mit register_

shutdown_function() eine Funktion festzulegen, die beim Beenden eines Skripts ausgeführt wird. Diese benutzerdefinierte Funktion wird aufgerufen, wenn PHP den Abbruch der Verbindung durch den Anwender registriert oder das Skript regulär beendet wird.