Depende.
De http://us3.php.net/manual/en/features.connection-handling.php:
Cuando un script PHP está funcionando normalmente el estado normal, se activa. Si el cliente remoto se desconecta, el indicador de estado ABORTED se activará. Una desconexión remota del cliente generalmente es causada por cuando el usuario presiona el botón STOP.
Puede decidir si desea o no una desconexión del cliente para provocar que se interrumpa el script . A veces es útil tener siempre las secuencias de comandos ejecutar hasta su finalización, incluso si no hay navegador remoto que recibe la salida. Sin embargo, el comportamiento predeterminado es al interrumpir el script cuando se desconecta el cliente remoto . Este comportamiento se puede ajustar a través de la ignore_user_abort
directiva php.ini como así como a través de la correspondiente directiva httpd.conf php_value ignore_user_abort
Apache o con la función ignore_user_abort()
.
Parece que la respuesta a su pregunta es "Sí, el script terminará si el usuario abandona la página".
Sin embargo, tenga en cuenta que, dependiendo del SAPI de fondo que se utilice (p. Ej., mod_php
), php cannot detect that the client has aborted the connection until an attempt is made to send information to the client. Si su script de ejecución larga no emite un flush()
, el script puede seguir ejecutándose aunque el usuario haya cerrado la conexión.
Para complicar las cosas es incluso si haces emitir llamadas periódicas a flush()
, teniendo en output buffering hará que esas llamadas para atrapar y no enviarlos hacia el cliente hasta que se completa el guión de todos modos!
Además que complica las cosas es si ha instalado controladores de Apache que amortiguan la respuesta (por ejemplo mod_gzip
) entonces PHP, una vez más, no se detecta que la conexión se cierra y el guión se mantendrá en el trueque.
Phew.
muy detallado +1 –