【发布时间】:2015-05-29 16:19:21
【问题描述】:
我正在尝试进行系统调用并将每一行实时发送到浏览器
echo('<pre>');
system('ping -c 10 www.google.com');
echo('</pre>);
当我从命令行调用它时,这有效(ping 的每一行一次输出一个)。但是,当我尝试使用浏览器(firefox 或 chrome)打开时,它不起作用。
我几乎可以肯定这与浏览器强制执行的输出缓冲有关。他们不会显示新数据,除非它高于 cetrain 阈值。这类问题的解决方案通常涉及输出一堆空白字符,即str_repeat(' ',1024*64)。你能想出什么办法让浏览器实时显示输出吗?
【问题讨论】:
-
你必须刷新......请参阅:php.net/manual/fr/function.ob-flush.php 但我认为不适用于所有浏览器
-
@AbraCadaver 在文档中查看此示例 php.net/manual/en/…
system自动实时输出所有结果 -
@HalayemAnis 如何在
system调用的各个输出之间刷新? -
@AbraCadaver,第一行写着
Execute an external program and display the output。我使用了system并确认它确实将整个输出发送到缓冲区。