部落客熱衷各種網路科技,常囉嗦,時常伴隨強迫症,常更新,覺得文章對你有幫助的可以關注我。 轉載請註明"深藍的鐮刀"
1.遇到問題
不知你們有沒有碰到過這樣兩種情況:所有的數據在瀏覽器中展示出來,因為需要對比數據,老闆要求是
不能使用分頁言歸正傳。
下面隆重推出PHP輸出控制之
輸出緩衝區
功能吧,
是不是很牛X的感覺。
原理的話就是PHP在輸出資料前先將資料放進緩衝(Buffer)裡,等待需要時我們再將緩衝的資料輸出出來,注意一下這裡不要跟快取(Cache)
混淆。
這樣做的好處一方面可以實現類似延遲載入的酷炫效果,一方面也能夠降低伺服器和客戶端的壓力,不然輸出大數據時就會出現記憶體不夠用的情況。
註:ob_flush()和flush()在用途上都是刷出緩衝區數據,但是官方建議,因為雖然在大部分WebServer下只用
就能刷出緩衝,但是在某些情況下如apache中有時需要調用flush()才行,所以為了你代碼的可移植性,
建議看到ob_flush()立馬在後面加上flush()。 既然知道原理,我們來解決開頭提到的兩個問題了。 3.解決百萬數據單頁輸出卡死的問題<?php
if (ob_get_level() == 0){ ob_start() }else{ exit(0);};//开始缓冲
for ($i = 0; $i<10; $i++){
echo "Line to show.\n<br />";//不直接输出,先存入缓冲区中
ob_flush();//将缓冲区的数据输出出来
flush();//将缓冲区的数据输出出来
sleep(2);//暂停两秒
}
echo "Done.";
ob_end_flush();//关闭并清理缓冲区
4.解決header實作檔案下載時檔案過大導致卡死的問題
4.解決header實作檔案下載時檔案過大導致卡死的問題
以上就介紹了PHP逐行輸出資料並解決兩種常見緩衝問題,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。