通常, 在下達輸出命令時, 網頁伺服器便將資料立即送交客戶端的瀏覽器, 此時, PHP程式並不一定是已經執行完畢了, 因此, 網頁伺服器可能是一邊在執行敘述命令, 另一邊又在忙著輸出資料, 所以造成網頁伺服器的負載較重, 為了改善這種情形, 可以呼叫「ob_start()」函數, 讓要輸出到使用者端瀏覽器的資料先寫入到「buffer(緩衝區)」裡, 等到PHP程式執行完畢, 也就是整個PHP網頁都解譯完畢, 再將存放在緩衝區裡的資料一併(全部的資料)輸出到使用者端瀏覽器。
在上一節範例的說明中, 筆者已強調header()函數只可用在尚未有任何資料輸出至瀏覽器之前才可呼叫, 否則將會產生錯誤, 因此, 可應用「ob_start()」函數, 讓整個PHP網頁都解譯完畢後, 再將存放在緩衝區裡的資料一併全部地輸出到使用者端瀏覽器:
<body>
<?php
ob_start();
header("Location: message.htm");
?>
</body>
喔喔!上例還是錯了, 因為上例的HTML標籤(<body>)放置在「ob_start();」命令敘述之前, HTML標籤已早一步執行輸出的動作了, 所以, 「ob_start();」命令敘述應該擺在任何HTML標籤或header()函數、echo()、print()函數、printf()函數命令敘述之前, 最簡單的方法就是將「ob_start();」命令敘述放在PHP程式網頁的第一行。