簡體   English   中英

PHP輸出緩沖區失敗

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM