Обеспечение того, чтобы скрипт завершился при прерывании работы пользователя - PullRequest
0 голосов
/ 26 ноября 2010

Я написал скрипт, который не имеет ограничения по времени, и max_execution_time равно 0

  1. Я должен работать до конца своей работы или при прерывании работы пользователя (отмена из браузера).
    Как я могу быть уверен, что когда пользователь прервет загрузку страницы из браузера, скрипт будет убит сервером?

  2. Означает ли это, что скрипт убивает немедленно или __деструктор классов вызывается раньше?

Ответы [ 2 ]

2 голосов
/ 26 ноября 2010

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

Это может быть реализовано, если скрипт при запуске создаст файл. Затем каждый раз он проверяет, есть ли этот файл еще там. Если это так, то оно продолжается, если нет, то оно выходит.

Хитрость заключается в поиске имени файла. Я делаю это, давая каждой странице запрос уникальный идентификатор пользователя. И сценарий 'worker', и сценарий 'kill' вызываются с одним и тем же идентификатором пользователя в URL (GET).

1 голос
/ 26 ноября 2010

Насколько я понимаю, с помощью php невозможно остановить выполнение скрипта, когда пользователь прекращает загрузку страницы в конце. Я предполагаю, что «Отмена» означает, что вы нажимаете «Стоп» или закрываете браузер, пока страница еще загружается.

...