Это зависит.
От http://us3.php.net/manual/en/features.connection-handling.php:
Когда PHP скрипт работает нормально нормальное состояние, является активным. Если удаленный клиент отключает флаг состояния ABORTED , он включается. Удаленный клиентский разъединение обычно вызван пользователем, нажав кнопку STOP.
Вы можете решить, хотите ли вы отключить клиентское соединение , чтобы ваш сценарий был прерван. Иногда бывает , чтобы всегда иметь ваши сценарии для запуска до завершения, даже если нет удаленный браузер, получающий выход. Поведение по умолчанию, однако, для вашего сценария будет отменено, когда удаленный клиент отключится. Это поведения может быть установлено с помощью php.ini директивы по ignore_user_abort
, как также через соответствующую директиву httpd.conf php_value ignore_user_abort
Apache или с функцией ignore_user_abort()
.
Это, похоже, ответ на ваш вопрос: «Да, сценарий завершится, если пользователь покинет страницу».
Однако осознайте, что в зависимости от используемого бэкэнд SAPI (например, mod_php
), php cannot detect that the client has aborted the connection until an attempt is made to send information to the client. Если ваш длинный скрипт не выдаст flush()
, скрипт может продолжать работать, даже если пользователь закрыл соединение.
усложнять даже если вы сделать выпуск периодических вызовов flush()
, имея output buffering на причинит эти вызовы в ловушку и не отправляет их клиенту, пока скрипт не завершится в любом случае!
Далее усложнять, если вы установили Apache обработчики, буферные ответ (например, mod_gzip
), а затем еще раз PHP не обнаружит, что соединение закрывается и сценарий будет держать на грузоперевозки.
Фуэ.
очень подробно +1 –