![](/img/trans.png)
[英]how to display output in real time to an array in exec(), system() php
[英]php output system() in real time
我正在尝试进行系统调用,并将每一行实时发送到浏览器
echo('<pre>');
system('ping -c 10 www.google.com');
echo('</pre>);
当我从命令行调用它时,此方法有效(ping的每一行一次输出一个)。 但是,当我尝试使用浏览器(Firefox或chrome)打开时,它不起作用。
我几乎可以肯定,这与浏览器强制执行的输出缓冲有关。 除非它们超过cetrain阈值,否则它们不会显示新数据。 解决这类问题的方法通常包括输出一堆空白字符,即str_repeat(' ',1024*64)
。 您能想到让浏览器实时显示输出的任何方法吗?
您不能以这种方式这样做。 您的php请求仅运行一次,然后重新运行一个响应。
在命令执行结束时,还会显示系统功能的结果。 您在命令行中看到的只是命令本身的日志,而不是您的php代码。
我建议使用一种长时间轮询技术或soquet-io与服务器建立持续/实时通信。
<?php
// WARNING : this define depends from web browser
// Google Chrome => 1024
// Mozilla Firefox => 2048 (not sure)
// Internet Explorer => Much more ... but works :)
define ("NUMBER_BYTE_PADDERS", "1024" );
ob_implicit_flush(1);
print padder ("first message") . "<br />";
sleep (5);
print padder ("second message after 5 seconds") . "<br />";
sleep (10);
print padder ("third message after 15 seconds") . "<br />";
function padder ($msg) {
for ($i=0 ; $i < NUMBER_BYTE_PADDERS ; $i++) {
$msg .= ' ';
}
return $msg;
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.