在上一篇有關ob_start()的文章中,我們學習了如何啟動輸出緩衝區。現在我們需要結束輸出緩衝,並將整個HTML發送到瀏覽器進行渲染。我們可以借助ob_end_flush()和ob_end_clean()函數來完成此操作。
ob_end_flush()函數
用法:
bool ob_end_flush ()
參數:該函數沒有任何參數。
返回類型:此函數將存儲的HTML發送到瀏覽器並關閉輸出緩衝。成功時,返回TRUE,否則返回FALSE。
ob_end_clean()函數
用法:
bool ob_end_clean()
參數:該函數沒有任何參數。
返回類型:此函數清除存儲的HTML並關閉輸出緩衝。成功時,返回TRUE,否則返回FALSE。
以下示例程序旨在說明PHP中ob_end_flush()和ob_end_clean()的工作:
<?php
// PHP code to illustrate the working of
// ob_end_flush() and ob_end_clean()
// ob_end_flush()
ob_start();
echo "Hello Geek!"; //This will get printed.
ob_end_flush();
// ob_end_clean()
ob_start();
echo "Hi Geek!"; //This will not get printed.
ob_end_clean();
?>
輸出:
Hello Geek!
注意事項:
- ob_end_flush()或ob_end_clean()不是必需的函數,即,如果開發人員在未使用上述函數的情況下使用ob_start(),則該網頁似乎可以正常顯示所有內容,但是背後發生的事情卻遠未優化。當PHP遇到ob_start()時,它將分配一個新的輸出緩衝區並連接出現在其後的每個HTML,如果沒有終止函數,則在存儲結束時將存儲的數據作為默認操作發送到瀏覽器。開發人員可以通過在不需要時終止輸出緩衝來創建優化的網頁,從而使全局堆棧保持清晰。
- 這就提出了一個問題,如果我們使用ob_end_clean()來清理整個輸出緩衝區,那為什麽還要使用輸出緩衝呢?我們將ob_end_clean()與ob_get_contents()一起使用,後者首先將內容作為字符串獲取,然後清除並關閉輸出緩衝區,這將清除全局堆棧並將整個內容保留在變量中以供進一步處理。
參考:
- http://php.net/manual/en/function.ob-end-flush.php
- http://php.net/manual/en/function.ob-end-clean.php
相關用法
注:本文由純淨天空篩選整理自PronabM大神的英文原創作品 PHP | ob_end_flush(), ob_end_clean() Functions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。