Процессы PHP, вызываемые через AJAX, отменяются на "ESC"? - PullRequest
5 голосов
/ 02 апреля 2009

Если я сделаю вызов AJAX, будет ли отменен вызов AJAX, если пользователь нажал «ESC» или покинул эту страницу?

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

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

Спасибо!

Поздние открытия:

Вызов AJAX фактически отменяется, если я нажимаю «ESC» в Firefox (отмечено в firebug). Процесс PHP продолжается и не зависит от нажатия ESC или закрытия вкладки.

Ответы [ 2 ]

3 голосов
/ 02 апреля 2009

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

Примечание: нажатие на ESC само по себе не завершит Ajax-вызов, если только вы не прописали такое поведение нажатия клавиш.

0 голосов
/ 02 апреля 2009

Одна заметка ... если вы вызвали свой AJAX-вызов по гиперссылке, используя атрибут href, то YES, пользователь может нажать ESC и остановить передачу.

<a href="javascript:doFoo();">This can be canceled by pressing ESC</a>

<a href="#" onclick="doFoo();">This can NOT be canceled by pressing ESC</a>
...