繁体   English   中英

php实时输出system()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM