Ça dépend.
De http://us3.php.net/manual/en/features.connection-handling.php :
Quand un script PHP s'exécute normalement l'état NORMAL, est actif. Si le client distant se déconnecte, l'état ABORTED est activé. Une déconnexion client distant est généralement causée par l'utilisateur appuie sur son bouton STOP.
Vous pouvez décider si vous voulez ou non qu'une déconnexion du client entraîne votre script soit interrompu. Parfois, il est pratique de toujours faire en sorte que vos script s'exécutent jusqu'à la fin, même s'il n'y a pas navigateur distant ne reçoit la sortie. Le comportement par défaut est cependant pour votre script soit interrompu lorsque le client client distant se déconnecte. Ce comportement peut être défini via l'option ignore_user_abort
directive php.ini comme ainsi qu'à travers la directive php_value ignore_user_abort
Apache httpd.conf ou avec la directive ignore_user_abort()
fonction.
Cela semble dire que la réponse à votre question est "Oui, le script se terminera si l'utilisateur quitte la page".
Cependant, il faut savoir que, selon le backend SAPI utilisé (par ex, mod_php
), php ne peut pas détecter que le client a interrompu la connexion jusqu'à ce qu'une tentative soit faite pour envoyer des informations au client. . Si votre script à long terme n'émet pas un flush()
le script peut continuer à s'exécuter même si l'utilisateur a fermé la connexion.
Pour compliquer les choses, même si vous faire émettre des appels périodiques à flush()
ayant mise en mémoire tampon des sorties on fera en sorte que ces appels soient piégés et ne les enverront pas au client avant que le script ne se termine de toute façon !
Plus d'informations sur Ce qui complique les choses, c'est que vous avez installé des gestionnaires Apache qui mettent la réponse en mémoire tampon (par exemple mod_gzip
), une fois encore, php ne détectera pas que la connexion est fermée et le script continuera à fonctionner.
Ouf.