Черт возьми,
Я использовал следующий ignore_user_abort .
ignore_user_abort(true); set_time_limit(0); session_start();
Однако, когда я перемещаюсь от страницы, на которой я запускаю запрос AJAX, сценарий останавливается?
Что я делаю не так?
В руководстве по PHP в нем говорится:
PHP не обнаружит, что пользователь прервал соединение до тех пор, пока не будет предпринята попытка отправить информацию клиенту. Простое использование инструкции echo не гарантирует отправку информации, см. Flush ().
Кажется, вы предлагаете использовать эхо, и он просто определит, что пользователь отключился и продолжит?
PHP не обнаружит … пока не будет предпринята попытка отправить информацию клиенту
Это звучит мне так: когда php не может сбросить свой буфер клиенту: stop. Поэтому я предлагаю использовать ob_start()
для буферизации в начале страницы, вы также можете реализовать gzip следующим образом: ob_start('ob_gzhandler')
.
Возможно, ваш сервер имеет встроенный тайм-аут, который убивает скрипт? Следует также отметить, что вы не должны использовать echo
в прерванном скрипте, потому что вам некуда отправлять результат.
Некоторые вещи, которые следует учитывать
Вы уверены, что пользователь прервал проблему?
Вы проверили журнал, чтобы узнать, не зарегистрированы ли какие-либо ошибки?
Ваш сервер убивает скрипт независимо от самого скрипта?
Является ли вызов ajax даже выполненным? Я предполагаю, что он запускается, когда пользователь перемещается.
Вы можете использовать wirehark для просмотра трафика между вашим браузером и веб-сервером, чтобы убедиться, что на самом деле происходит то, что вы думаете.
ОКРУГ КОЛУМБИЯ