2012-05-30 2 views
2

Я не эксперт по запросу http, поэтому этот вопрос может быть тривиальным для некоторых. Я отправляю запрос на php-скрипт, который занимает много времени, чтобы обработать файл и вернуть ответ. Есть ли способ отправить ответ до того, как этот скрипт завершит свою задачу, чтобы сообщить пользователю о состоянии процесса? Поскольку эта задача может занять до нескольких минут, я хотел бы уведомить пользователя о завершении выполнения ключевых частей процесса.http request partial response

Примечание: Я не могу разорвать этот запрос на несколько других

я не мог бы иметь правильный подход здесь, если так у вас есть другие идеи, как это можно делать?

ответ

1

Технически да, но для этого требуется, чтобы у вас был тонкий контроль над http-стеком, который вы можете или не можете иметь в типичной настройке php. Я хотел бы предложить вам взглянуть на другие решения (Например, сделать запрос, чтобы запустить задачу - то опрос, чтобы получить обновленную информацию о прогрессе)

0

http://www.redips.net/javascript/ajax-progress-bar/

здесь большая статья, которая идет над созданием Аякса прогресс бар, чтобы использовать с php.

не знаю, если это не имеет смысла!

+0

Я не ищу индикатор прогресса. – slash197

+0

Единственное, что я могу придумать, это то, что PHP-скрипт сохранит идентификатор сеанса и значение прогресса (но вы хотите его вычислить) в db, который проверяется асинхронно с помощью ajax. они могут быть ассоциативными, а не численными. например, status = 'выполнение первой задачи' ... status = 'первая задача завершена, начиная вторую задачу' ... и т. д. , но идея остается иметь второй вызов ajax, чтобы проверить, что сценарий обновляет по мере его прохождения его процессов –

0

Я думаю, что наилучшим способом для длительных запросов является работа cron. Вы можете отправить запрос, который создаст «задачу» и поймает задачу по заданию cron. Задача Cron может изменять статус задачи во время работы, и вы можете проверить статус задачи с помощью интервальных запросов. Я не могу представить себе другой способ информировать пользователей о прохождении запросов. Как только вы ответите, ваши заголовки отправляются, а PHP останавливается.

EDIT: следует отметить, что задания Cron доступны только на серверах Linux. серверам Windows потребуется доступ к планировщику задач, который большинство веб-хостов не разрешит.