File: connection-handling.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (92 lines) | stat: -rwxr-xr-x 4,900 bytes parent folder | download
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
<?xml version="1.0" encoding="iso-8859-1"?>
 <chapter id="features.connection-handling">
  <title>Manejando conexiones</title>

  <note>
   <para>Todo lo siguiente se aplica a partir de la 3.0.7 y posterior.</para>
  </note>

  <para>
   Internamente en PHP se mantiene el estado de la conexi&oacute;n. Hay 3 posibles
   estados:
   <itemizedlist>
    <listitem><simpara>0 - NORMAL</simpara></listitem>
    <listitem><simpara>1 - ABORTED (Abortado)</simpara></listitem>
    <listitem><simpara>2 - TIMEOUT (Fuera de tiempo)</simpara></listitem>
   </itemizedlist>
  </para>

  <simpara>
   Cuando un script PHP se est&aacute; ejecutando se activa el estado NORMAL.
   Si el cliente remoto se desconecta, se pasa al estado ABORTADO. Esto
   suele ocurrir cuando el usuario pulsa en el bot&oacute;n STOP del navegador.
   Si se alcanza el l&iacute;mite de tiempo impuesto por PHP (ver <function>
   set_time_limit</function>), se pasa al estado TIMEOUT.</simpara>

  <simpara>
   Puedes decidir si quieres que la desconexi&oacute;n de un cliente cause que tu
   script sea abortado. Algunas veces es c&oacute;modo que tus scripts se ejecuten
   por completo, incluso si no existe ya un navegador remoto que reciba la
   salida. El comportamiento por defecto es sin embargo, que tu script se
   aborte cuando el cliente remoto se desconecta. Este comportamiento puede
   ser configurado v&iacute;a la directiva ignore_user_abort en el fichero php3.ini,
   o tambi&eacute;n con la funci&oacute;n <function>ignore_user_abort</function>. Si no le
   espeficicas al PHP que cuando un usuario aborte lo ignore, tu script terminar&aacute;
   su ejecuci&oacute;n. La &uacute;nica excepci&oacute;n es si tienes registrada un funci&oacute;n de
   desconexi&oacute;n usando la funci&oacute;n <function>register_shutdown_function</function>.
   Con una funci&oacute;n de desconexi&oacute;n, cuando un usuario remoto pulsa en el bot&oacute;n
   STOP, la pr&oacute;xima vez que tu script intenta mostrar algo, PHP detecta que
   la conexi&oacute;n ha sido abortada y se llama a la funci&oacute;n de desconexi&oacute;n. Esta
   funci&oacute;n de desconexi&oacute;n tambi&eacute;n se llama al final de la ejecuci&oacute;n de tu
   script cuando se ha ejecutado normalmente, de manera que si quieres hacer
   algo diferente en caso de que un cliente se haya desconectado, puedes usar
   la funci&oacute;n <function>connection_aborted</function>. Esta funci&oacute;n devuelve
   verdadero si la conexi&oacute;n fue abortada.</simpara>

  <simpara>
   Tu script tambi&eacute;n se puede terminar por un temporizador interno.
   El timeout por defecto es de 30 segundos. Se puede cambiar usando
   la directiva max_execution_time en el fichero php3.ini o la correspondiente
   directiva php3_max_execution_time en la configuraci&oacute;n del servidor de p&aacute;ginas
   Apache, como tambi&eacute;n con la funci&oacute;n <function>set_time_limit</function>. Cuando
   el temporizador expira, el script se aborta como en el caso de la desconexi&oacute;n
   del cliente, de manera que si se ha definido una funci&oacute;n de desconexi&oacute;n,
   esta se llamar&aacute;. Dentro de esta funci&oacute;n de desconexi&oacute;n, puedes comprobar
   si fue el timeout el que caus&oacute; que se llamara a la funci&oacute;n de desconexi&oacute;n,
   llamando a la funci&oacute;n <function>connection_timeout</function>. Esta funci&oacute;n
   devolver&aacute; verdadero si el timeout causa que se llame a la funci&oacute;n de
   desconexi&oacute;n.</simpara>

  <simpara>
   Hay que destacar que ambos, el estado ABORTED y el TIMEOUT, se pueden
   activar al mismo tiempo. Esto es posible si le dices a PHP que ignore
   las desconexiones intencionadas de los usuarios. PHP a&uacute;n notar&aacute; el hecho
   de que el usuario puede haberse desconectado, pero el script continuar&aacute;
   ejecut&aacute;ndose. Si se alcanza el tiempo l&iacute;mite de ejecuci&oacute;n ser&aacute; abortado
   y, si se ha definido una funci&oacute;n de desconexi&oacute;n, esta ser&aacute; llamada. En
   este punto, encontrar&aacute;s que las funciones <function>connection_timeout</function>
   y <function>connection_aborted</function> devuelven verdadero. Puedes
   comprobar ambos estados de una manera simple usando la funci&oacute;n <function>
   connection_status</function>. Esta funci&oacute;n devuelve un campo de bit de los
   estados activos. De este modo, si ambos estados est&aacute;n activos devolver&iacute;a
   por ejemplo un valor 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:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->