1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
<?xml version="1.0" encoding="iso-8859-1"?>
<chapter id="features.connection-handling">
<title>Verbindungssteuerung</title>
<note>
<para>Folgendes trifft auf die Versionen 3.0.7 und spter zu.</para>
</note>
<para>
PHP erhlt intern einen Verbindungsstatus. Dieser kann drei
Zustnde annehmen:
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED</simpara></listitem>
<listitem><simpara>2 - TIMEOUT</simpara></listitem>
</itemizedlist>
</para>
<simpara>
Wenn ein PHP-Skript aktiv ist, ist der Status blicherweise
NORMAL. Sollte der Client-Rechner die Verbindung beenden, wird
der Status auf ABORTED gesetzt. Ein clientseitiges Beenden der
Verbindung wird fr gewhnlich veranlat, wenn der Benutzer den
STOP-Button seines Browsers drckt. Wenn das eingestellte Zeitlimit
(siehe <function>set_time_limit</function>) berschritten wird,
wird der Status TIMEOUT gesetzt.</simpara>
<simpara>
Sie knnen entscheiden, ob der Verbindungsabbruch seitens des Clients
den Abbruch des Skriptes zur Folge haben soll.
Manchmal ist es sinnvoll, Skripte sauber zu beenden, auch wenn
kein Browser mehr zur Verfgung steht, der die Ausgabe empfngt.
Die Abarbeitung eines Skriptes wird standardmig abgebrochen, wenn
der Client die Verbindung beendet.
Dieses Verhalten kann sowohl durch die Option ignore_user_abort in
der Konfigurationsdatei php3.ini, durch die entsprechende
Option php3_ignore_user_abort in der Apache-Konfigurationsdatei
als auch durch <function>ignore_user_abort</function> beeinflut
werden.
Wenn PHP nicht angewiesen wird, einen Verbindungsabbruch durch den
Benutzer zu ignorieren und die Verbindung dann durch den Benutzer
beendet wird, wird die Abarbeitung des Scriptes abgebrochen. Die einzige
Ausnahme ist, wenn durch die Funktion
<function>register_shutdown_function</function> eine Shutdown-Funktion
angegeben wird, die bei clientseitigem Abbruch ausgefhrt wird.
Wenn dann der Benutzer den STOP-Button seines Browsers drckt, wird
PHP bei der nchsten Ausgabe des Skriptes feststellen, da die
Verbindung abgebrochen wurde und die Shutdown-Funktion aufrufen.
Diese Shutdown-Funktion wird auch aufgerufen, wenn das Skript auf
normalem Wege beendet wird, daher sollte man, wenn man fr den
Fall eines Benutzerabbruchs etwas anderes vorgesehen hat,
die Funktion <function>connection_aborted</function> verwenden.
Sie gibt &true; zurck, wenn die Verbindung abgebrochen wurde.</simpara>
<simpara>
Ein Skript kann ebenfalls durch den eingebauten Script-Timer
beendet werden. Der Standard-Timeout betrgt 30 Sekunden. Er kann
durch die Option max_execution_time in der php3.ini, durch
den entsprechenden Eintrag php3_max_execution_time in der
Apache-Konfigurationsdatei oder durch die Funktion
<function>set_time_limit</function> beeinflut werden. Bei
Zeitberschreitung wird das Skript beendet und, genau wie im obigen
Fall des Verbindungsabbruchs, eine registrierte Shutdown-Funktion
ausgefhrt. Um zu berprfen, ob es sich um einen Abbruch aufgrund
von Zeitberschreitung handelt, kann die Funktion
<function>connection_timeout</function> benutzt werden. Sie gibt
&true; zurck, wenn es sich um eine Zeitberschreitung handelt.</simpara>
<simpara>
Zu bemerken ist, da der ABORTED und der TIMEOUT-Status gleichzeitig
auftreten knnen. Dies ist mglich, wenn PHP angewiesen wird,
Benutzerabbrche zu ignorieren. PHP wird feststellen, da der
Benutzer die Verbindung abgebrochen hat, das Skript allerdings
luft weiter. Sollte es dann das Zeitlimit erreichen, wird es
abgebrochen und eine Shutdown-Funktion, wenn definiert, wird
aufgerufen. Zu diesem Zeitpunkt kann man feststellen, dass
<function>connection_timeout</function>
und <function>connection_aborted</function> &true; zurckgeben.
Diese beiden Statusmglichkeiten knnen auch durch einen Aufruf
der Funktion <function>connection_status</function> abgefragt
werden. Sie liefert ein Bitfeld des aktiven Status. Wenn
beispielsweise TIMEOUT und ABORTED aktiv sind, wird 3 zurckgegeben.
</simpara>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
|