簡體   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