[英]PHP output buffer fails
作為演示,請嘗試以下代碼:
<?php
echo '<pre>';
ob_end_flush();
for($i=0;$i<2;$i++) {
passthru("ping -n 8 127.0.0.1");
@ob_flush();
}
echo '</pre>';
?>
這是輸出:
Pinging stackoverflow.com [64.34.119.12] with 32 bytes of data:
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Ping statistics for 64.34.119.12:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 28ms, Maximum = 29ms, Average = 28ms
Pinging stackoverflow.com [64.34.119.12] with 32 bytes of data:
Reply from 64.34.119.12: bytes=32 time=28ms TTL=56
Reply from 64.34.119.12: bytes=32 time=27ms TTL=56
Reply from 64.34.119.12: bytes=32 time=26ms TTL=56
Reply from 64.34.119.12: bytes=32 time=29ms TTL=56
Ping statistics for 64.34.119.12:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 26ms, Maximum = 29ms, Average = 27ms
它實際上執行了兩次(來自“小於2”循環)。 如果測試腳本,您會注意到第一個腳本花了幾秒鍾,然后立即全部輸出。 之后(第二個循環),它逐行進行。 我的目標是只有一個輸出,逐行進行而不是緩沖任何輸出,就像發生以下情況一樣:
<?php
system("ping -n 8 127.0.0.1");
?>
注意:此程序在具有PHP 5的Windows服務器上運行。
因此,這里發生的是您的瀏覽器可能正在緩沖。 我認為,如果您查看數據包嗅探器,則刷新可能會起作用。
只是要確保,調用flush()
以及ob_flush()
。
您永遠無法清除所有緩沖區,因為PHP僅知道自己的緩沖區。 服務器可以緩沖,而客戶端幾乎總是緩沖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.