PHP读取shell_exec实时输出

我只是在我的linux服务器上尝试使用PHP和shell_exec。到目前为止,这是一个非常酷的功能使用,真正享受。有没有办法在命令运行时查看正在进行的实时输出?

比如“ping stackoverflow.com”,因为它每次ping显示PHP的结果时都会ping目标地址?那可能吗?

我希望看到缓冲区的实时更新正在运行。也许这是不可能的,但肯定会很好。

这是我正在尝试的代码,并且我尝试过的每一种方式总是在命令完成后显示结果。

<?php

  $cmd = 'ping -c 10 127.0.0.1';

  $output = shell_exec($cmd);

  echo "<pre>$output</pre>";

?>

我已经尝试将回声部分放在一个循环中,但仍然没有运气。任何人有任何建议,使其显示现场输出到屏幕,而不是等待,直到完成后

我尝试过exec,shell_exec,system和passthru。其中的每个人在完成后显示内容。除非我使用写入类型的语法,否则我没有正确设置战利品。

要读取进程的输出,popen()是要走的路。您的脚本将与程序并行运行,您可以通过读取和写入输出/输入来进行交互,就像它是一个文件一样。

但是,如果您只想将结果直接转储给用户,您可以使用passthru():

echo '<pre>';
passthru($cmd);
echo '</pre>';

现在,如果要在程序运行时显示输出,可以这样做:

while (@ ob_end_flush()); // end all output buffers if any

$proc = popen($cmd, 'r');
echo '<pre>';
while (!feof($proc))
{
    echo fread($proc, 4096);
    @ flush();
}
echo '</pre>';

该代码应该运行命令,并在运行时将输出直接推送到最终用户。

http://stackoverflow.com/questions/20107147/php-reading-shell-exec-live-output

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:PHP读取shell_exec实时输出