Создал скрипт, который получает данные из некоторых веб-сервисов и нашей базы данных, форматирует отчет, затем зашифровывает его и делает его доступным для загрузки. Когда я впервые начал, я сделал сценарий командной строки, чтобы увидеть результат, когда он вышел, и преодолеть ограничение тайм-аута сценария, которое вы получаете при просмотре в браузере. Но поскольку я не хочу, чтобы мой пользователь должен был использовать его из командной строки или должен был запускать php на своем компьютере, я хочу сделать этот запуск с нашего веб-сервера.Необходимо запустить длинный php-скрипт из браузера
Поскольку этот сценарий может занять несколько минут, мне нужно сделать способ его обработки в фоновом режиме, а затем начать загрузку после успешного создания файла. Каков наилучший способ запустить этот скрипт без запуска таймаута? Я попытался это сделать раньше (используя обратные шаги для запуска скрипта отдельно и так далее), но сдался, поэтому я прошу здесь. В идеале пользователь нажимает кнопку отправки в форме для запуска запроса, а затем возвращается на страницу вместо того, чтобы заставлять их смотреть в пустое окно браузера. Когда zip-файл существует (что означает, что процесс завершен), он должен уведомить их (с помощью перезагруженной страницы AJAX? Я еще не знаю).
Это на сервере окон 2007.
set_time_limit (0); ignore_user_abort (истина); header ('Местоположение:'. $ _ SERVER ['SCRIPT_NAME']); - Не должно ли это работать теоретически? Кажется, что все еще ждут страницы. Идея здесь заключается в том, чтобы запустить скрипт, но отправить пользователя на предыдущую страницу, чтобы он был уведомлен ajax, когда файл существует. – Chris
Крис Я предполагаю, что это сработает, но это также убьет ваш сервер при высокой нагрузке! – Alfred
Хорошо, теперь у меня есть рабочая форма. Используя set_time_limit (0) и запрос ajax, он будет работать в фоновом режиме. – Chris