Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当Perl脚本完成其迭代时,以PHP(动态)显示Perl输出_Php_Perl - Fatal编程技术网

当Perl脚本完成其迭代时,以PHP(动态)显示Perl输出

当Perl脚本完成其迭代时,以PHP(动态)显示Perl输出,php,perl,Php,Perl,我有很多在linux上运行的perl脚本,可以执行很多任务, 每一个都需要10分钟(进行备份之类的工作)并输出每个步骤的结果。。这样用户就可以看到脚本当时在做什么 我现在正在做的是通过shell\u exec()命令从php调用perl脚本, 发生的情况是,在脚本完成工作后显示输出,并且该浏览器保持加载10分钟,这不是交互式的 因此,我想在perl脚本运行时直接将其输出到浏览器,也就是说,无论perl脚本有什么输出,我都想在我的网页上显示出来。您可以尝试一下,这是exec的一种变体,可以立即输出

我有很多在linux上运行的perl脚本,可以执行很多任务, 每一个都需要10分钟(进行备份之类的工作)并输出每个步骤的结果。。这样用户就可以看到脚本当时在做什么

我现在正在做的是通过
shell\u exec()
命令从php调用perl脚本, 发生的情况是,在脚本完成工作后显示输出,并且该浏览器保持加载10分钟,这不是交互式的

因此,我想在perl脚本运行时直接将其输出到浏览器,也就是说,无论perl脚本有什么输出,我都想在我的网页上显示出来。

您可以尝试一下,这是exec的一种变体,可以立即输出任何控制台输出(或者我相信是这样)。确保未启用任何输出缓冲。否则,请尝试proc_open并轮询文件句柄

如果这不起作用,将Perl备份脚本的输出重定向到一个临时文件,并通过AJAX/something轮询它以更新网页


否则,我不确定如何帮助您将10分钟的运行时间缩短为2秒。

我还没有尝试过这一点,但您应该能够使用打开一个管道来读取Perl脚本的输出并回显到浏览器


Randal Schwartz的文章展示了一种更复杂的Perl方法的实现。

Sinan,popen方法不起作用,还没有尝试过第二种方法,乍看起来似乎更复杂,但会仔细研究。Mario,passthru()不起作用,也不会打开进程,因为他们倾向于将进程发送到后台;嗯,我有使用AJAX的想法,但我不能直接输出100个脚本;因此,这种选择并不存在。