Я создал скрипт, который получает данные от некоторых веб-сервисов и нашей базы данных, форматирует отчет, затем архивирует его и делает его доступным для загрузки. Когда я только начинал, я сделал его сценарием командной строки, чтобы увидеть вывод по мере его появления и обойти ограничение времени ожидания сценария, которое вы получаете при просмотре в браузере. Но поскольку я не хочу, чтобы мой пользователь использовал его из командной строки или запускал php на своем компьютере, я хочу вместо этого запустить его с нашего веб-сервера.
Поскольку запуск этого сценария может занять несколько минут, мне нужен способ, чтобы он мог обрабатываться в фоновом режиме, а затем начать загрузку после успешного создания файла. Как лучше всего запустить этот скрипт, не вызывая тайм-аут? Я пытался сделать это раньше (с помощью обратных галочек, чтобы запустить скрипт отдельно и тому подобное), но сдался, поэтому я спрашиваю здесь. В идеале пользователь должен нажать кнопку «Отправить» в форме, чтобы запустить запрос, а затем вернуться на страницу вместо того, чтобы смотреть на пустое окно браузера. Когда zip-файл существует (это означает, что процесс завершен), он должен уведомить их (через AJAX? Перезагрузил страницу? Я пока не знаю).
Это на Windows Server 2007.