Вывод Perl в PHP (динамически), поскольку Perl Script завершает свою итерацию - PullRequest
1 голос
/ 07 декабря 2010

У меня есть много perl-скриптов, работающих на linux, которые идут и выполняют много задач, каждый из которых занимает около 10 минут (создание резервных копий и тому подобное) и выводит каждый шаг ... так, чтобы пользователь видел, чтоскрипт делает в это время ...

То, что я сейчас делаю, вызывает вызов скрипта perl из команды php через shell_exec(), что происходит, когда вывод выводится после того, как скрипт завершил работу идля этого браузера продолжайте загрузку в течение 10 минут, что не является интерактивным.

Итак, я хочу получить вывод непосредственно в браузер из сценария perl во время его работы, то есть, как только он может появиться через 2 секунды, независимо от того, какой вывод есть из сценария perl, я хочу показать его на своей веб-странице..

Ответы [ 2 ]

3 голосов
/ 07 декабря 2010

Я не пробовал этого, но, вероятно, вы сможете открыть канал, используя popen , чтобы прочитать вывод сценария Perl и передать его в браузер.

Рэндал Шварц Отслеживание длинных процессов через CGI показывает реализацию более сложного подхода в Perl.

0 голосов
/ 07 декабря 2010

Вы можете попробовать passthru () , который является вариантом exec, который выводит любой консольный вывод сразу (или, как я полагаю).Убедитесь, что выходная буферизация не включена.В противном случае попробуйте proc_open и опрашивайте дескриптор файла.

Если это не сработает, перенаправьте вывод сценария резервного копирования Perl во временный файл и выполните опрос через AJAX / что-то для обновления веб-страницы.

В противном случае я не уверен, как мы могли бы помочь вам ускорить 10-минутную работу в течение 2 секунд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...