Игнорировать отмену пользователя, игнорируется PHP? - PullRequest
3 голосов
/ 11 января 2010

Ад все,

Я использовал следующее ignore_user_abort .

ignore_user_abort(true); set_time_limit(0); session_start();

Однако, когда я ухожу со страницы, на которой я запускаю AJAX-запрос, скрипт останавливается?

Что я делаю не так?

Обновление

В руководстве по PHP написано:

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

Похоже, вы можете использовать echo, и он просто определит, что пользователь отключился, и продолжит работу?

Ответы [ 3 ]

1 голос
/ 11 января 2010

PHP не будет обнаруживать ... пока не будет предпринята попытка отправить информацию клиенту

Для меня это звучит так: когда php не может сбросить свой буфер для клиента: остановитесь. Поэтому я предлагаю использовать ob_start() для буферизации каждого в начале страницы, вы также можете реализовать gzip следующим образом: ob_start('ob_gzhandler').

0 голосов
/ 12 января 2010

Что нужно учитывать

Вы уверены, что прерывание пользователя вызывает проблему?

Вы проверили журнал, чтобы увидеть, нет ли ошибок в журнале .?

Ваш сервер уничтожает скрипт независимо от самого скрипта?

Ajax-вызов вообще выполняется? Я предполагаю, что это работает, когда пользователь уходит.

Вы можете использовать wireshark для отслеживания трафика между вашим браузером и веб-сервером, чтобы убедиться, что то, что вы думаете, происходит на самом деле.

DC

0 голосов
/ 11 января 2010

Может быть, у вашего сервера есть встроенное время ожидания, которое убивает скрипт? Следует также отметить, что вы не должны использовать echo в прерванном сценарии, потому что вам некуда отправлять вывод.

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