-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathconnection-handling.xml
105 lines (98 loc) · 4.8 KB
/
connection-handling.xml
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
104
105
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: dc0f955be2a10b707ae06f7da69f52fab24df3d1 Maintainer: fa Status: ready -->
<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
<title>Verbindungssteuerung</title>
<para>
PHP erhält intern einen Verbindungsstatus. Dieser kann vier
Zustände annehmen:
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED</simpara></listitem>
<listitem><simpara>2 - TIMEOUT</simpara></listitem>
<listitem><simpara>3 - ABORTED und 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 für gewöhnlich veranlasst, wenn Benutzer den
STOP-Button des Browsers drücken. Wenn das eingestellte Zeitlimit
(siehe <function>set_time_limit</function>) überschritten wird,
wird der Status TIMEOUT gesetzt.</simpara>
<simpara>
Sie können 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 Verfügung steht, der die Ausgabe empfängt.
Die Abarbeitung eines Skriptes wird standardmäßig abgebrochen, wenn
der Client die Verbindung beendet.
Dieses Verhalten kann sowohl durch die Option
<option>ignore_user_abort</option> in
der Konfigurationsdatei &php.ini;, durch die entsprechende
Option <literal>php_value ignore_user_abort</literal> in der Apache-Konfigurationsdatei
&httpd.conf; als auch durch <function>ignore_user_abort</function> beeinflußt
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 ausgeführt wird.
Wenn dann der Benutzer den STOP-Button seines Browsers drückt, wird
PHP bei der nächsten Ausgabe des Skriptes feststellen, dass 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 für den
Fall eines Benutzerabbruchs etwas anderes vorgesehen hat,
die Funktion <function>connection_aborted</function> verwenden.
Sie gibt &true; zurück, wenn die Verbindung abgebrochen wurde.</simpara>
<simpara>
Ein Skript kann ebenfalls durch den eingebauten Script-Timer
beendet werden. Der Standard-Timeout beträgt 30 Sekunden. Er kann
durch die Option <option>max_execution_time</option> in der &php.ini;,
durch den entsprechenden Eintrag
<literal>php_value max_execution_time</literal> in der
Apache-Konfigurationsdatei &httpd.conf; oder durch die Funktion
<function>set_time_limit</function> beeinflußt werden. Bei
Zeitüberschreitung wird das Skript beendet und, genau wie im obigen
Fall des Verbindungsabbruchs, eine registrierte Shutdown-Funktion
ausgeführt. Um zu überprüfen, ob es sich um einen Abbruch aufgrund
von Zeitüberschreitung handelt, kann die Funktion
<function>connection_status</function> benutzt werden. Sie gibt
<literal>2</literal> zurück, wenn es sich um eine Zeitüberschreitung
handelt.</simpara>
<simpara>
Zu bemerken ist, dass der ABORTED- und der TIMEOUT-Status gleichzeitig
auftreten können. Dies ist möglich, wenn PHP angewiesen wird,
Benutzerabbrüche zu ignorieren. PHP wird feststellen, dass der
Benutzer die Verbindung abgebrochen hat, das Skript allerdings
läuft 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; zurückgeben.
Diese beiden Statusmöglichkeiten können 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 zurückgegeben.
</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:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->