本文章來給大家總結(jié)介紹關(guān)于php中flush()和ob_flush(),ob_end_flush()用法與區(qū)別,有需要了解的朋友可進入?yún)⒖紖⒖肌?/p>
首先來說說buffer,它是一個內(nèi)存地址空間,為4096(1kb)【在php.ini配置文件中找到output_buffering配 置】,php有php output_buffering機制,php代碼在執(zhí)行的時候,并不是立即將內(nèi)容輸出,而是想將echo/print內(nèi)容輸出到buffer,buffer滿的時候才會將數(shù)據(jù)交給系統(tǒng)內(nèi)核交由tcp傳給瀏覽器顯示,當開啟php php output_buffering機制(默認是開啟的,可以通過ob_start()函數(shù)開啟)后,只有當php buffer中的數(shù)據(jù)達到了設(shè)置值,才會將buffer中 的數(shù)據(jù)發(fā)送給瀏覽器,但是瀏覽器也是有緩存的,一些版本的瀏覽當數(shù)據(jù)達到256字節(jié)的時候才輸出內(nèi)容,
ob_start()函數(shù):打開輸出緩沖區(qū).
函數(shù)格式 void ob_start(void)
說明:當緩沖區(qū)激活時,所有來自PHP程序的非文件頭信息均不會發(fā)送,而是保存在內(nèi)部緩沖區(qū),為了輸出緩沖區(qū)的內(nèi)容,可以使用ob_end_flush()或flush()輸出緩沖區(qū)的內(nèi)容。
Flush:刷新緩沖區(qū)的內(nèi)容,輸出。
函數(shù)格式:flush()
說明:這個函數(shù)經(jīng)常使用,效率很高。
ob_get_contents:返回內(nèi)部緩沖區(qū)的內(nèi)容。
函數(shù)格式:string ob_get_contents(void)
說明:這個函數(shù)會返回當前緩沖區(qū)中的內(nèi)容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE.
ob_get_length:返回內(nèi)部緩沖區(qū)的長度。
函數(shù)格式:int ob_get_length(void)
說明:這個函數(shù)會返回當前緩沖區(qū)中的長度;和ob_get_contents一樣,如果輸出緩沖區(qū)沒有激活,則返回 FALSE.
ob_end_clean:刪除內(nèi)部緩沖區(qū)的內(nèi)容,并且關(guān)閉內(nèi)部緩沖區(qū)
函數(shù)格式:void ob_end_clean(void)
說明:這個函數(shù)不會輸出內(nèi)部緩沖區(qū)的內(nèi)容而是把它刪除
ob_end_flush:發(fā)送內(nèi)部緩沖區(qū)的內(nèi)容到瀏覽器,并且關(guān)閉輸出緩沖區(qū)
函數(shù)格式:void ob_end_flush(void)
說明:這個函數(shù)發(fā)送輸出緩沖區(qū)的內(nèi)容(如果有的話)
ob_implicit_flush:打開或關(guān)閉絕對刷新
函數(shù)格式:void ob_implicit_flush ([int flag])
說明:默認為關(guān)閉緩沖區(qū),打開絕對輸出后,每個腳本輸出都直接發(fā)送到瀏覽器,不再需要調(diào)用 flush()
flush()可以將等待輸出的內(nèi)容立即發(fā)送到客戶端,而ob_flush()只有等待到buffer滿的時候才輸出,可以通過下面一個簡單的php實例來驗證下,實例代碼如下: