Heim  >  Artikel  >  Backend-Entwicklung  >  Behandlung von drei Verbindungszuständen in PHP

Behandlung von drei Verbindungszuständen in PHP

伊谢尔伦
伊谢尔伦Original
2016-11-22 10:24:141475Durchsuche

Innerhalb von PHP verwaltet das System den Verbindungsstatus und sein Status hat drei mögliche Situationen:

0 – NORMAL (normal)

1 – ABORTED (abnormaler Ausgang)

2 – TIMEOUT

Wenn das PHP-Skript normal im NORMAL-Zustand ausgeführt wird, ist die Verbindung gültig. Wenn der Remote-Client die Verbindung trennt, wird das Statusflag ABORTED aktiviert. Die Unterbrechung der Remote-Client-Verbindung wird normalerweise dadurch verursacht, dass der Benutzer auf die Schaltfläche STOP klickt. Wenn die Verbindungszeit das Zeitlimit von PHP überschreitet, wird das Statusflag TIMEOUT aktiviert.

kann entscheiden, ob das Skript beendet werden muss, wenn der Client die Verbindung trennt. Manchmal ist es praktisch, ein Skript vollständig ausführen zu lassen, auch wenn kein Remote-Browser die Ausgabe des Skripts akzeptiert. Standardmäßig wird das Skript beendet, wenn die Remote-Client-Verbindung unterbrochen wird. Dieser Vorgang kann durch „ignore_user_abort“ in php.ini oder durch die entsprechenden „php_value“-Funktionen „ignore_user_abort“ und „ignore_user_abort()“ in der httpd.conf-Einstellung gesteuert werden. Wenn PHP nicht angewiesen wird, Benutzerunterbrechungen zu ignorieren, wird das Skript unterbrochen, es sei denn, über register_shutdown_function() wird eine Shutdown-Trigger-Funktion festgelegt. Wenn der Remote-Benutzer auf die STOP-Schaltfläche klickt und das Skript erneut versucht, Daten auszugeben, erkennt PHP über diese Schließtriggerfunktion, dass die Verbindung unterbrochen wurde und ruft die Schließtriggerfunktion auf.

Skripte können auch durch den integrierten Skript-Timer unterbrochen werden. Das Standard-Timeout-Limit beträgt 30 Sekunden. Dieser Wert kann durch Festlegen der max_execution_time von php.ini oder des entsprechenden Parameters „php_value max_execution_time“ in der httpd.conf-Einstellung oder der Funktion set_time_limit() geändert werden. Wenn der Zähler abläuft, wird das Skript ähnlich wie in der obigen Verbindungsunterbrechungssituation beendet und die zuvor registrierte Auslöserfunktion zum Herunterfahren wird zu diesem Zeitpunkt ebenfalls ausgeführt. In der Shutdown-Trigger-Funktion können Sie durch Aufrufen der Funktion „connection_status()“ überprüfen, ob das Timeout dazu geführt hat, dass die Shutdown-Trigger-Funktion aufgerufen wurde. Wenn eine Zeitüberschreitung zu einem Aufruf der Shutdown-Trigger-Funktion führt, gibt die Funktion 2 zurück.

Zu beachten ist, dass die Zustände ABORTED und TIMEOUT gleichzeitig gültig sein können. Dies ist möglich, wenn PHP angewiesen wird, Benutzer-Exit-Aktionen zu ignorieren. PHP wird weiterhin bemerken, dass der Benutzer die Verbindung getrennt hat, das Skript jedoch weiterhin ausgeführt wird. Bei Erreichen des Laufzeitlimits wird das Skript beendet und die eingestellte Shutdown-Trigger-Funktion ebenfalls ausgeführt. An dieser Stelle werden Sie feststellen, dass die Funktion „connection_status()“ den Wert 3 zurückgibt.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn