ob緩存

一些Web服務器的output_buffering默認是4069字符或者更大,即輸出內容必須達到4069字符服務器纔會flush刷新輸出緩衝,爲了確保flush有效,最好在ob_flush()函數前有以下語句:
複製代碼 代碼如下:
print str_repeat("", 4096); //以確保到達output_buffering值ob_* 系列函數是操作PHP本身的輸出緩衝區,所以ob_flush只刷新PHP自身的緩衝區,而flush是刷新apache的緩衝區。所以,正確使用倆者的順序是:先ob_flush,然後flush。ob_flush是把數據從PHP的緩衝中釋放出來,flush是把緩衝內/外的數據全部發送到瀏覽器(表示可以的多次ob_flush然後再flush到遊覽器)。
3、不要誤認爲用了ob_start()後,腳本的echo/print等輸出就永遠不會顯示在瀏覽器上了。因爲PHP腳本運行結束後,會自動刷新緩衝區並輸出內容。

實例
<?php
ob_start();
echo str_repeat(’’,4096);
//發送內部緩衝區的內容到遊覽器,刪除緩衝區的內容,並關閉緩衝區;
ob_end_flush();
//發送內部緩衝區的內容到遊覽器,刪除緩衝區的內容,不關閉緩衝區。
ob_flush();

$i = 1;
while(true)
{
echo $i++;
ob_flush();
flush();
sleep(1);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章