PHP阅读shell_exec实时输出
我只是shell_exec
在Linux服务器上试验PHP
。这是一个非常酷的功能,到目前为止,我真的很喜欢它。有没有办法查看命令运行时正在进行的实时输出?
例如,如果ping stackoverflow.com
运行时正在ping通目标地址,则每次ping通时,都使用PHP显示结果吗?那可能吗?
我希望看到缓冲区正在运行时进行实时更新。也许不可能,但肯定会很好。
这是我正在尝试的代码,我尝试过的所有方式都始终在命令完成后显示结果。
<?php $cmd = 'ping -c 10 127.0.0.1';
$output = shell_exec($cmd);
echo "<pre>$output</pre>";
?>
我尝试过将echo
零件循环放置,但仍然没有运气。有没有人建议将其显示在屏幕上,而不是等到命令完成后再显示?
我试过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>';
此代码应运行命令,并在运行时将输出直接推给最终用户。
以上是 PHP阅读shell_exec实时输出 的全部内容, 来源链接: utcz.com/qa/429244.html