Подтвердить что ты не робот

Что произойдет, если пользователь выйдет из браузера или сменит страницу до того, как будет выполнен запрос AJAX

Я вызываю php script поверх ajax, чтобы выполнить некоторое обслуживание базы данных. Если пользователь закрывает страницу, отбрасывает назад или нажимает ссылку, будет ли полностью выполнен PHP скрипт? Есть ли способ сделать это?

Возможно, если php script вызвал метод exec() или что-то подобное, что в свою очередь вызовет script через консоль как таковую:

$ php /var/www/httpdocs/maintenance.php

?

4b9b3361

Ответ 1

Пока пользовательский агент (браузер и т.д.) полностью отправил запрос, сервер имеет все необходимое и выполнит запрос и попытается отправить ответ.

На самом деле такое поведение "пингования" часто используется для процессов с "сердцебиением", которые поддерживают обслуживание теплым или выполняют периодическое обслуживание.

Ответ 2

Это состояние гонки. PHP обнаруживает в какой-то момент (обычно при попытке сделать вывод), что Apache вопит в лицо, что удаленный пользователь закрыл соединение. Все, что вы хотели сделать, сделано в этот момент, зависит от того, как структурирован ваш код.

Если вы хотите, чтобы все операции были завершены до закрытия script, используйте ignore_user_abort(TRUE), что заставляет работать PHP после отсоединения соединения. Он по-прежнему зависит от ограничений пользователя max_execution_time и еще чего-то, но он не будет отключен, потому что вы отключились.

Ответ 3

Как только веб-запрос будет отправлен на ваш сервер, на самом деле не имеет значения, закрывает ли пользователь свой браузер или перемещается. Ваш сервер все равно будет отвечать, но никто не будет слушать ответ.

Ответ 4

Зависит от настроек, веб-сервера, операционной системы и т.д.

Обычно запрос обрабатывается как обычно, и ответ будет просто никогда не читаться. Иногда запись может завершиться неудачно раньше, и запрос не работает во время обработки.

Ответ 5

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

Ответ 6

Если php начинает выполнение, то он будет продолжать выполняться независимо от того, будет ли пользователь закрывать окно или перемещается в сторону от страницы.

Ответ 7

Запустится php script, независимо от состояния браузера. Php анализируется на сервере, и ему все равно, открыт ли клиент или нет.

Ответ 8

Если HTTP-запрос был завершен, то да, PHP script будет выполнен полностью, даже если клиентский компьютер закрыт.