PHP Conference Japan 2024

輸出緩衝

輸出緩衝是指在輸出被清空(發送並捨棄)到瀏覽器(在網頁環境中)或 shell(在命令列上)之前,對輸出進行緩衝(暫時儲存)。當輸出緩衝處於活動狀態時,腳本不會發送任何輸出,而是將輸出儲存在內部緩衝區中。

影響 PHP 的緩衝

PHP 在輸出時依賴底層的軟體/硬體基礎設施。由命令列上的控制台(例如,行緩衝)或 Web 環境中的 Web 伺服器和瀏覽器(例如,完全緩衝)實現的緩衝確實會影響輸出顯示給終端使用者的時間。其中一些影響可以透過微調伺服器設定和/或調整各層的緩衝區大小來消除。

PHP 中的輸出緩衝控制

PHP 提供了一個完全緩衝的使用者級輸出緩衝區,並提供用於啟動、操作和關閉緩衝區的函數(大多數 ob_* 函數),以及兩個用於清空底層系統緩衝區的函數(flush()ob_implicit_flush())。其中一些功能也可以使用適當的 php.ini 設定來設定和/或配置。

使用案例

輸出緩衝通常適用於修改或檢查緩衝輸出、在請求中多次使用緩衝輸出或需要控制輸出清空的情況。具體使用案例包括:

  • 快取計算/時間密集型腳本的結果,例如透過產生靜態 HTML 頁面
  • 透過顯示、儲存到檔案和/或透過電子郵件發送來重複使用產生的輸出
  • HTML 頁面的 head 部分與 body 部分分開清空,允許瀏覽器在腳本執行可能更耗時的流程(例如,資料庫/檔案存取、外部網路連線)時載入外部資源。僅當 HTTP 狀態碼在標頭發送後無法更改時,這才有用
  • 從原本會產生輸出的函數中提取資訊(例如,phpinfo()
  • 透過修改/使用部分內容(例如,提取資料、替換單詞/片語、新增缺少的 HTML 標籤)或在特定條件下(例如,錯誤)完全捨棄輸出來控制第三方程式碼的輸出
  • 填補某些不可用的 Web 伺服器功能(例如,壓縮或編碼輸出)

新增註釋

使用者貢獻的註釋

此頁面沒有使用者貢獻的註釋。
To Top