2 回答

TA貢獻1735條經驗 獲得超5個贊
php緩沖區(qū),一般默認是開啟的,大小為4096比特,也就是4k左右,整個流程來說,是php緩沖區(qū)->apache緩沖區(qū)- >瀏覽器緩沖區(qū)。
1 當緩沖區(qū)滿的時候,會自動將緩沖區(qū)里面的內容往下一級緩沖區(qū)輸送
2 當php程序運行結束的時候,緩沖區(qū)內容也會自動清空并輸出
3人為使用ob_flush將php緩沖區(qū)內容輸送到Apache緩沖區(qū),使用flush將Apache緩沖區(qū)內容輸送到瀏覽器緩沖區(qū)
!使用ini_set是無法修改buffer的設置。

TA貢獻1807條經驗 獲得超9個贊
在PHP編程中, 我們經常會遇到一些直接產生輸出的函數(shù), 如passthru(),readfile(), var_dump() 等. 但有時我們想把這些函數(shù)的輸出導入到文件中,或者先經過處理再輸出, 或者把這些函數(shù)的輸出作為字符串來處理.
這時我們就要用到PHP函數(shù)ob_star()了.
處理輸出緩沖的函數(shù)主要有這么幾個:
PHP函數(shù)ob_star()開始輸出緩沖, 這時PHP停止輸出, 在這以后的輸出都被轉到一個內部的緩沖里.
ob_get_contents() 這個函數(shù)返回內部緩沖的內容. 這就等于把這些輸出都變成了字符串.
ob_get_ length() 返回內部緩沖的長度.
ob_end_flush() 結束輸出緩沖, 并輸出緩沖里的內容. 在這以后的輸出都是正常輸出.
ob_end_clean() 結束輸出緩沖, 并扔掉緩沖里的內容.
舉個例子, var_dump()函數(shù)輸出一個變量的結構和內容, 這在調試的時候很有用.
但如果變量的內容里有 < , > 等HTML的特殊字符, 輸出到網(wǎng)頁里就看不見了. 怎么辦呢?
用PHP函數(shù)ob_star()能很容易的解決這個問題.
ob_start(); var_dump($var); $out = ob_get_contents(); ob_end_clean();
這時var_dump()的輸出已經存在 $out 里了. 你可以現(xiàn)在就輸出:
echo '< pre>' . htmlspec
ialchars($out) . '< /pre>' ;
或者等到將來, 再或者把這個字符串送到模板(Template)里再輸出。
以上就是PHP函數(shù)ob_star()的功能優(yōu)勢對比。
添加回答
舉報