什么之間的區別ob_flush(),并flush()和我為什么一定要同時調用?該ob_flush()參考說:此函數將發送輸出緩沖區的內容(如果有)。該flush()參考說:刷新PHP的寫緩沖區以及PHP使用的任何后端PHP(CGI,Web服務器等)。但是,它繼續說:[它]可能無法覆蓋Web服務器的緩沖方案…因此,在我看來,我可以一直使用ob_flush()所有時間。但是,這樣做會得到奇怪的結果。有人可以簡單地解釋一下這是怎么回事嗎?
3 回答

慕慕森
TA貢獻1856條經驗 獲得超17個贊
ob_flush發送應用程序啟動的緩沖區。ob_start()任何PHP腳本中都可能有多個嵌套的。ob_flush將當前內容傳遞到上層。
PHP本身(可以自行決定)可以緩沖輸出。這取決于后端。但是通常FastCGI有一個套接字緩沖區。因此,還flush()需要調用以將當前內容發送到Web服務器。
現在,Web服務器本身可能實現了另一個緩沖方案(mod_deflate或內容過濾器),您對此沒有影響。但這很少,因為它需要專門配置。
無論如何,請同時使用兩者。

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
ob_flush()是高級沖洗。它刷新高級緩沖區,并將所有內容放入準備發送的低級內部緩沖區中。
請注意,ob_函數家族會創建緩沖區堆棧,因此,ob_flush()如果編寫代碼來利用此堆棧,那么盲目地在所有地方編寫確實會給您“奇怪的結果”。
flush() 是低級刷新,指示PHP刷新其內部低級數據緩沖區。
仍然在其下方,有套接字層緩沖區。在此之下,有網絡層緩沖區。而且,在最低級別上,電子隊列沿著數據電纜傳輸。
- 3 回答
- 0 關注
- 454 瀏覽
添加回答
舉報
0/150
提交
取消