2011-05-02 8 views
6

Estoy ejecutando una configuración estándar de Apache con PHP. Me pregunto qué sucede cuando un cliente solicita una página que hace que se ejecute un script PHP, luego el cliente mata la solicitud del servidor, antes de que el script finalice. Apache ¿mata el script de alguna manera, o está permitido completarlo de todos modos?¿Aparece un script PHP ejecutado por apache cuando la conexión HTTP muere?

+0

Se permitirá que el script termine. – meagar

+0

@meager: No. Consulte mi respuesta. –

Respuesta

8

Las respuestas documentation esto:

Cuando un script PHP está funcionando normalmente el estado normal, es activo. Si el cliente remoto se desconecta, la bandera de estado ABORTED está activada. Una desconexión remota del cliente generalmente es causada por cuando el usuario presiona el botón STOP. Si se alcanza el límite de tiempo impuesto por PHP (consulte set_time_limit()), se activará el indicador de estado TIMEOUT .

Puede decidir si desea o no una desconexión de 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 recibiendo 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 directiva php.ini ignore_user_abort como así como a través de la correspondiente php_value ignore_user_abort Apache directiva httpd.conf o con la función ignore_user_abort(). Si no le dice a PHP que ignore un usuario abortar y el usuario aborta, su secuencia de comandos será finalizada.

Si usted quiere decirle al cliente remoto que el guión está completa, pero continuar con el procesamiento posterior a la solicitud, sin embargo, mira this question/answer.

Cuestiones relacionadas