Печать вывода программы на веб-страницу по мере ее поступления - PullRequest
1 голос
/ 23 февраля 2011

Честно говоря, я понятия не имею, задавался ли этот вопрос раньше или что-то в этом роде. Трудно искать такую ​​вещь.

Итак, здесь идет. Я хотел бы, чтобы на моей веб-странице запускалась программа (PHP был бы правильным выбором здесь, да?), Размещенная на сервере, а затем использовала выходные данные этой программы для печати на веб-странице. Тем не менее, программа не распечатывает свои выходные данные сразу, поэтому, когда я пытался это сделать раньше, она ждет, пока программа успешно завершит свою работу, прежде чем печатать выходные данные, а не печатать их по мере их получения. (Что имеет смысл)

Как можно было бы печатать выходные данные на веб-странице при возвращении каждого нового результата? То есть после отображения веб-страницы необходимо добавить записи в div, когда программа выводит строки текста.

Ajax? Javascript? Я просто ищу правильный путь, а не код.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

Лично я бы сделал это с тремя файлами:

  1. Сценарий, выполняемый на сервере ( worker.php )
  2. Файл php, вызываемый клиентом ( index.php )
  3. Второй php-файл для обработки запросов ajax из index.php ( ajax.php )

Мой рабочий процесс будет следующим:

  1. Пользователь звонит index.php
  2. index.php делает один вызов worker.php , который начинает производить вывод в текстовый файл ( output.txt )
  3. index.php непрерывно пингует ajax.php , наблюдая, было ли добавлено что-то новое в output.txt , и постоянно обновляется по мере появления новых выходных данных
  4. Когда worker.php завершено, он выводит сигнал EOF в текстовый файл и удаляет его через X секунд. (X на некоторое значение больше, чем задержка между эхо-запросами в файле ajax.php .)
0 голосов
/ 23 февраля 2011

Основная идея заключается в том, что вы открываете канал для дочернего процесса и читаете из него, как если бы это был файл.В частности, для PHP взгляните на proc_open .

...