【发布时间】:2014-10-09 04:48:03
【问题描述】:
我见过PHP reading shell_exec live output 和PHP: Outputting the system / Shell_exec command output in web browser,但无法进行以下操作。
注意:最初,我的 shell 脚本运行的是一些 python,但我已经对其进行了简化。
live.sh
uname -a
date
watch --no-title date
live.php
<?php
$cmd = "sh live.sh";
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>';
?>
uname 和 date 输出在浏览器中显示正常,但 watch 输出没有。
我实际上是在尝试不可能的事情吗?
【问题讨论】:
-
如果你真的需要一个服务器进程的输出来替换之前渲染的文本,我想你会需要Ajax。
-
从 python 进程捕获输出时,您需要禁用输出缓冲:
python -u /path/to/watch ...或PYTHONUNBUFFERED=1 watch ... -
@JasperN.Brouwer 你是传奇,它对我有用。