輸出緩衝是指在輸出被清空(發送並捨棄)到瀏覽器(在網頁環境中)或 shell(在命令列上)之前,對輸出進行緩衝(暫時儲存)。當輸出緩衝處於活動狀態時,腳本不會發送任何輸出,而是將輸出儲存在內部緩衝區中。
PHP 在輸出時依賴底層的軟體/硬體基礎設施。由命令列上的控制台(例如,行緩衝)或 Web 環境中的 Web 伺服器和瀏覽器(例如,完全緩衝)實現的緩衝確實會影響輸出顯示給終端使用者的時間。其中一些影響可以透過微調伺服器設定和/或調整各層的緩衝區大小來消除。
PHP 提供了一個完全緩衝的使用者級輸出緩衝區,並提供用於啟動、操作和關閉緩衝區的函數(大多數 ob_* 函數),以及兩個用於清空底層系統緩衝區的函數(flush() 和 ob_implicit_flush())。其中一些功能也可以使用適當的 php.ini 設定來設定和/或配置。
輸出緩衝通常適用於修改或檢查緩衝輸出、在請求中多次使用緩衝輸出或需要控制輸出清空的情況。具體使用案例包括:
HTML
頁面
HTML
頁面的 head
部分與 body
部分分開清空,允許瀏覽器在腳本執行可能更耗時的流程(例如,資料庫/檔案存取、外部網路連線)時載入外部資源。僅當 HTTP
狀態碼在標頭發送後無法更改時,這才有用
HTML
標籤)或在特定條件下(例如,錯誤)完全捨棄輸出來控制第三方程式碼的輸出