當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


PHP ob_end_flush(), ob_end_clean()用法及代碼示例


在上一篇有關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()一起使用,後者首先將內容作為字符串獲取,然後清除並關閉輸出緩衝區,這將清除全局堆棧並將整個內容保留在變量中以供進一步處理。

參考:



相關用法


注:本文由純淨天空篩選整理自PronabM大神的英文原創作品 PHP | ob_end_flush(), ob_end_clean() Functions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。