![](/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.