ob_start()是在PHP中常用的回調函數,使用它可以把輸出的內容緩存下來,不必立即發送到頁面上。
舉個例子,假設現在要輸出一個簡單的短語"Hello World":
echo "Hello World";
此時輸出會立即顯示在頁面上。但有時我們在處理一些包含大量計算的輸出時,需要等到計算完成后才輸出結果。這時候就可以使用ob_start():
ob_start(); echo "Hello World"; $output = ob_get_clean();
上面的代碼將"Hello World"添加到緩沖區輸出,而不是立即發送到頁面上,并將輸出緩存在變量$output中。這樣,我們就可以先進行其他的計算處理,稍后再把結果發送到頁面上。
我們還可以在ob_start()函數中添加一個可選的參數來設定輸出緩沖區的大小。例如,以下代碼創建一個輸出緩沖區大小為10,000字節:
ob_start(null, 10000);
在一些情況下,我們需要把輸出緩沖區中的內容刷新到頁面上。一個例子就是在執行長時間的腳本時,為了避免超時,我們需要及時把計算結果輸出:
ob_start(); // 處理一些時間較長的計算 echo "計算結果"; ob_flush(); // 繼續處理其他輸出
上面的代碼使用ob_flush()函數,在緩沖區內容不完整的情況下,將部分已經緩沖的內容輸出到瀏覽器并清空緩沖區。這樣就可以及時輸出結果,同時繼續進行其他計算。
除了ob_flush()函數,我們還可以使用別的函數從緩沖區中取出輸出內容。比如:ob_get_contents()函數可返回整個輸出緩沖區中的內容,而ob_get_clean()函數不僅返回所有的輸出,還會在返回結果后清空輸出緩沖區。
總之,使用ob_start()函數可以讓我們方便的把輸出緩存下來,隨時輸出,同時也能讓我們更好地掌控頁面傳輸。