Может ли скрипт PHP продолжить работу после завершения HTTP-запроса? - PullRequest
8 голосов
/ 15 сентября 2009

Как мне написать PHP-скрипт, который продолжает работать, даже после удаления некоторого текста и завершения HTTP-запроса? Возможно ли это?

Ответы [ 2 ]

5 голосов
/ 15 сентября 2009

Чтобы запустить приложение PHP навсегда или до тех пор, пока php не завершится

ignore_user_abort(true);

set_time_limit(0);
4 голосов
/ 15 сентября 2009

Вас может заинтересовать директива конфигурации ignore_user_abort и / или функция ignore_user_abort:

Устанавливает, будет ли клиент отключаться должно привести к прерыванию работы скрипта.

Используя это, вы можете:

  • генерирует часть страницы, которая должна быть отправлена ​​в браузер
  • очистить выход с помощью flush и / или ob_flush
  • звоните ignore_user_abort (сейчас или раньше)
  • сделать больше работы

Браузер пользователя, вероятно, по-прежнему будет отображать «ожидание» или «загрузка», но содержимое страницы будет загружено и отображено - и даже если пользователь нажимает «Стоп», ваш сценарий должен продолжить выполнение.

Для получения дополнительной информации, на странице руководства этой функции есть пример - и вы можете взглянуть на эту статью: Как использовать ignore_user_abort() для выполнения обработки вне диапазона


Конечно, хотя это может быть использовано для некоторого легкого процесса (например, «очистка» содержимого в конце страницы при максимально быстром отображении его пользователю) , вы все равно будете ограничены на max_execution_time и т. п.

Итак, это не решение, которое следует использовать для длинных / тяжелых вычислений.

...