-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathconnection-handling.xml
95 lines (89 loc) · 4.34 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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: c7590bf936b04f04380e23096f20d1a32600b7ae Maintainer: hcrow Status: ready -->
<!-- Reviewed: yes Maintainer: seros -->
<chapter xml:id="features.connection-handling" xmlns="http://docbook.org/ns/docbook">
<title>Manejo de conexiones</title>
<para>
Internamente, en PHP se mantiene un estado de conexión. Hay 4
posibles estados:
<itemizedlist>
<listitem><simpara>0 - NORMAL</simpara></listitem>
<listitem><simpara>1 - ABORTED</simpara></listitem>
<listitem><simpara>2 - TIMEOUT</simpara></listitem>
<listitem><simpara>3 - ABORTED y TIMEOUT</simpara></listitem>
</itemizedlist>
</para>
<simpara>
Cuando un script de PHP está ejecutándose normalmente está activo el estado NORMAL (normal).
Si el cliente remoto se desconecta, se activa el indicador de estado
ABORTED (abortada). Un cliente remoto se desconecta normalmente porque
presiona su botón STOP. Si se alcanza el tiempo límite impuesto por PHP
(véase <function>set_time_limit</function>), se activa el indicador de estado
TIMEOUT (expirada).</simpara>
<simpara>
Se puede decidir si se desea que un cliente que se desconecte ocasione
que se aborte el script. Algunas veces es útil que los scripts se ejecuten
hasta su finalización, incluso si ya no hay un navegador remoto recibiendo
la salida. Sin embargo, el comportamiento predeterminado es que el script
sea abortado cuando el cliente remoto se desconecte. Este comportamiento puede ser
establecido a través de la directiva ignore_user_abort de &php.ini;, así como a través
de la directiva correspondiente de Apache
<literal>php_value ignore_user_abort</literal> de &httpd.conf;, o
con la función <function>ignore_user_abort</function>. Si se decide no
indicarle a PHP que ignore que el usuario aborte y el usuario aborta, el script
finalizará. La única excepción es si se tiene registrada una función de apagado
con <function>register_shutdown_function</function>. Con una
función de apagado, cuando el usuario remoto activa el botón STOP, la
próxima vez que el script intente mostrar algo, PHP detectará que
la conexión fue abortada, llamando así a la función de apagado.
Esta función de apagado también se invoca al final del script cuando
finaliza normalmente, así que para hacer algo diferente en caso de que un
cliente se desconecte, se puede emplear la función <function>connection_aborted</function>.
Esta función devolverá &true; si la conexión fue
abortada.</simpara>
<simpara>
El script puede ser finalizado también por el temporizador de script
incorporado. El tiempo predeterminado es de 30 segundos. Se puede cambiar
con la directiva <option>max_execution_time</option> de &php.ini; o la
correspondiente de Apache <literal>php_value max_execution_time</literal>
de &httpd.conf;, así como con la
función <function>set_time_limit</function>. Cuando el temporizador
expira, el script se abortará y, como el caso del cliente anterior que
se desconectó, si la función de apagado ha sido registrada, será llamada.
Dentro de esta función de apagado se puede comprobar si el tiempo de
espera causó la llamada a la función de apagado invocando a
la función <function>connection_status</function>. Esta función devolverá
2 si el tiempo de espera causó la llamada a la función de apagado.
</simpara>
<simpara>
Una cosa a observar es que los estados ABORTED y TIMEOUT pueden estar
activados al mismo tiempo. Esto es posible si se le indica a PHP
que ignore los abortos que ocasione el usuario. PHP notará de hecho que un
usuario podría haber roto la conexión, pero el script se mantendrá
ejecutándose. Si entonces se alcanza el límite de tiempo, será abortado y
la función de apagado, si la hubiera, será llamada. En este punto se
encontrará que <function>connection_status</function>
devuelve 3.
</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:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->