PHP - 捕获并显示exec / shell_exec定期输出?

时间:2012-01-17 23:19:00

标签: php linux shell stdout

您可以轻松使用exec()shell_exec()执行系统命令,如ls -l /var/www/mysite,然后输出命令的结果。

如何执行并显示定期将信息输出到控制台的命令的结果?

示例: 你有一个简单的Python脚本。如果从控制台运行脚本,它只会每隔10秒向控制台打印一些类型的信息,直到强制退出脚本为止。

如何使用PHP执行此python命令并以某种方式实时捕获并将输出流式传输到浏览器中?这样的事情可能吗?我认为必须涉及某种Ajax,但我不确定。

我尝试过这样的事情:

python myscript.py > output.txt

然后我计划使用Ajax定期tailcat output.txt的内容并在浏览器中显示。但是,在脚本强制退出之前,output.txt似乎没有添加任何内容。

1 个答案:

答案 0 :(得分:2)

您没有看到output.txt的任何输出,因为它正在被缓冲。对于python,可以选择使其进行行缓冲。从联机帮助页:

       -u     Force  the  binary I/O layers of stdin, stdout and stderr to be unbuffered.  The text I/O layer will still be
              line-buffered.

所以你的命令就会变成:

python -u myscript.py > output.txt

对于PHP,flush函数可以帮助您。