首先要分清楚php中的output_buffering、伺服器的緩衝、瀏覽器的緩衝不是一樣的概念。
順序來說首先是echo,print>output_buffering>sercer buffering>bower buffering,輸出資料的順序是這麼個回事,前提是開啟了php.ini中output_buffering引數。
沒有的開啟就略過output_buffering。
伺服器和瀏覽器緩衝不了解這裡就只是說明下順序。
對於output_buffering影響的php提供的常用的函式有
對於server buffering 影響的輸出控制函式有
<?phpob_start();//或者php.ini 中output_buffering開啟
/* ob_end_clean()或者ob_end_flush()*/
for($a = 1; $a<10; $a++)
這句**網上也舉了很多例子,結合理解看來可以認為是flush()操作的server buffering 到bower buffering,然而這個**中output_buffering並沒有滿4096所以不會立馬轉到server buffering,也就不會呈現一秒一秒的顯示數字到頁面,如果想要實現提前關閉緩衝區就可以(關閉配置或者ob_end_clean(),ob_end_flush())就可實現將資料不經過output_buffering從而直接到server buffering
或者還可以
<?phpob_start();//或者php.ini 中output_buffering開啟
for($a = 1; $a<10; $a++)
這樣也可以實現
<?phpob_start();
ob_implicit_flush(true);//或者開啟implicit_flush
for($a = 1; $a<10; $a++)
這樣也不會一秒一秒的顯示,需要加入ob_flush() 或者關閉緩衝
總結下:flush()和ob_implicit_flush()操作物件是server buffering而其他以ob_flush()等等是操作物件是output_buffering,二者之間的關係一定是先output_buffering再server buffering的!!終於算是理解了
附上php輸出緩衝控制
php 緩衝區,PHP的輸出緩衝區
1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...
PHP的緩衝區
php 每執行一條輸出就把結果傳送給 php 緩衝區,php 緩衝區傳送給 apache 緩衝區,apache 緩衝區再傳送給瀏覽器。如果關閉 php 緩衝區,則每執行一條輸出就把結果直接傳送給apache 緩衝區。php.ini中 php 緩衝區預設設定 4096bytes output buff...
重新整理PHP緩衝區
為你的站點加速 php技巧 在當前 php 版本的預設配置下,輸出緩衝 output buffering 是被開啟的。舊版本則不是這樣,在舊版本的 php 中,字串在每次被輸出的時候 通過 echo 或 print 函式 都會觸發一次傳送到客戶端瀏覽器的動作。輸出緩衝 的引入,使得這一過程更加快速 ...