PHP скрипт запущен, что произойдет, когда я вернусь в браузер? - PullRequest
3 голосов
/ 28 ноября 2011

У меня есть этот PHP-скрипт, который я запускаю в своем веб-браузере. Он читает много данных и записывает их в базу данных. Что происходит

  1. когда я нажимаю НАЗАД в браузере (или перехожу на другую ссылку / страницу)?

  2. закрыть веб-браузер? Будет ли скрипт работать в фоновом режиме, пока он не будет завершен?

1 Ответ

8 голосов
/ 28 ноября 2011

Он должен продолжаться до тех пор, пока не будет установлен параметр php.ini ignore_user_abort (по умолчанию отключен).Так как ignore_user_abort отключен по умолчанию, поведение PHP по умолчанию - завершить сценарий до его завершения, если он обнаружит, что пользователь ушел.Чтобы изменить это, вызовите ignore_user_abort(true); в начале вашего сценария.

При этом в несколько недолговечных сценариях PHP может не обнаружить, что пользователь ушел, пока обработка не завершится, даже если пользователь отключился на несколько секунд.ранее.

См. ignore_user_abort () , в котором есть пример сценария, который показывает, что он будет продолжать работать после отключения пользователя.

Также обратите внимание, PHP will not detect that the user has aborted the connection until an attempt is made to send information to the client. Simply using an echo statement does not guarantee that information is sent, see flush() .

Если вы начали сеанс, файл сеанса не может быть закрыт (разблокирован) до тех пор, пока не завершится выполнение сценария, поэтому будущие страницы будут загружены тем же пользователем, который попытается запустить сеанс, может зависнутьпока скрипт с блокировкой сессии не закончится.Чтобы избежать этого, вы можете вызвать session_write_close , когда информация о сеансе больше не нужна, если вы планируете запускать скрипт в течение продолжительного периода времени.

Эта ссылка на обработку соединения вphp также должен вас заинтересовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...