Это может зависеть от конфигурации вашего сервера, но в целом сценарий будет продолжать выполняться, несмотря на закрытое соединение HTTP .
Я проверил это с Apache 2 + PHP5 как mod_php .Я ожидал бы, что поведение PHP с CGI и другими веб-серверами будет таким же, но я не знаю наверняка.
Лучший способ определить наверняка в вашей конфигурации, как предлагает @ tdammers : setСоздайте тестовый сценарий, подобный следующему, и просмотрите журнал.
<?php
error_log('Test script started.');
for ($i = 1; $i < 13; $i++) {
sleep(10);
error_log('Test script got to ' . (10 * $i) . ' seconds.');
}
error_log('Test script got to the end.');
?>
Получите доступ к этому сценарию (на /test.php
или чем-то еще), затем, прежде чем получить какие-либо результаты, нажмите «Стоп» в своем браузере.Это эквивалентно удалению до того, как ваш XHR вернется.Вы даже можете использовать его в качестве цели XHR и уйти.
Затем проверьте журнал ошибок: у вас должно быть начало, а затем сообщения каждые 10 секунд в течение двух минут и конца.Вы можете изменить высоту $i
, чтобы гарантировать, что ваш скрипт достигнет ожидаемого максимального времени выполнения, если вы тоже хотите это проверить.
Вам не нужно использовать error_log()
- вы можете написатьв файл или внесите какое-либо другое постоянное изменение на сервере, которое можно проверить, не оставляя открытым клиентское соединение.
Время выполнения сценария может прекратиться до этого из-за директивы max_execution_time
php.ini- но в любом случае это должно отличаться от времени ожидания веб-сервера.