Вопрос

Хотелось бы получить совет, как реализовать следующее:

Я хотел бы информировать своих пользователей о ходе выполнения задачи, выполняемой на моем сервере через AJAX.Мой сервер запускает PHP-скрипт, который загружает файл с помощью команды оболочки, используя функцию popen.Он периодически отображает/печатает происходящее.Я хотел бы захватить этот вывод с помощью AJAX и представить его пользователю.

В другом вопросе мне сказали, что мне, возможно, придется использовать опрос или комету?Я был бы очень признателен за любую помощь или рекомендации о том, как добиться этого самым простым и эффективным способом.Надеюсь, я все еще смогу использовать JQuery.

Спасибо всем, что нашли время прочитать это.

P.S.Мне удалось зайти так далеко благодаря сообществу stackoverflow. :)

Это было полезно?

Решение

Это звучит как прекрасная возможность для Длинный опрос Аякса, который является одним из множества методов, используемых в общих реализациях Comet.Есть еще один вопрос по переполнению стека с примером кода.

Другие советы

Ссылка, которую разместил Джим Пулс, — отличное место для начала.Многие пользователи, задававшие эти вопросы, предлагают много полезной информации об опросах Comet и PHP.В большинстве мест, которые я видел, для выполнения этой задачи рекомендуется использовать Python Twisted.

Также вот несколько ссылок:

Адаптивные приложения AJAX с COMET

Индикатор выполнения в JQuery

И еще одна статья о шаблонах AjAx для потоковой передачи HTTP

Я бы, вероятно, пошел по маршруту gs, упомянутому в конце, в зависимости от того, насколько «необходим» индикатор выполнения.Если это просто функция, помогающая пользователю понять, что обработка занимает немного больше времени, чем обычно, то «обмануть» его оценкой намного проще, чем живой опрос.

Я бы просто использовал обычный опрос вместо Comet, так как это больше похоже на хак.Чтобы сделать пользовательский интерфейс более гибким, вы можете изменять и обновляйте индикатор выполнения, не сверяясь с сервером, просто рассчитав среднее время, необходимое для выполнения задачи.Вы можете исправить ошибку, запросив правильный статус.Если вы это хорошо реализуете, все подумают, что это живое обновление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top