php php 緩衝區 buffer 原理

2021-08-28 20:09:59 字數 1098 閱讀 4591

1.緩衝流程

echo、print => php output_buffering => webserver buffer => browser buff => browser display

//即:指令碼輸出 => php的緩衝區設定 => 系統的緩衝區設定(apache、nginx) => 瀏覽器的緩衝區設定 => 顯示給使用者

2. php buffer

- php執行的結果先放入緩衝區(buffer),只有當緩衝區滿了或者php執行完畢,才將資料輸出去。

- 緩衝區是通過php.ini中的output_buffering變數控制,可以設定大於0的數值來開啟buffer。

- ob_start()手動啟用php output_buffering機制,使得即便輸出超過了4kb資料,也不把資料交給tcp傳給瀏覽器,因為ob_start()將php buffer空間設定到了足夠大 。只有直到指令碼結束,或者呼叫ob_end_flush函式,才會把資料傳送給客戶端瀏覽器。需要注意的是php.ini中php buffer是關閉的,再次呼叫ob_end_flush()會報warning。

3.webserver buffer

2、nginx buffer

4.browser buffer

ob_start() - 開啟輸出控制緩衝

ob_get_length() - 返回輸出緩衝區的長度

ob_get_level() - 返回輸出緩衝區的巢狀級別

ob_get_status() - 返回輸出緩衝區的狀態(陣列形式返回,預設返回最頂層,引數為true時返回所有)

ob_get_contents() - 返回輸出緩衝區的內容

ob_get_clean() - 以字串格式返回當前輸出緩衝區並關閉輸出緩衝

ob_end_clean() - 清空(擦除)緩衝區並關閉輸出緩衝

ob_get_flush() - 以字串返回輸出緩衝區內容並關閉緩衝

ob_end_flush() - 沖刷出(送出)輸出緩衝區內容緩衝並關閉輸出緩衝

6.辨析

flush()和ob_flush()

Java NIO 三 緩衝區Buffer

緩衝區本質上是一塊可以寫入資料,然後可以從中讀取資料的記憶體。這塊記憶體被包裝成nio buffer物件,並提供了一組方法,用來方便的訪問該塊記憶體。capacity capacity代表著buffer的固定大小值,能存放的最大值不超過capacity。position limit mark buf...

Java NIO 之 Buffer緩衝區

容量 capacity 緩衝區能夠容納的資料元素的最大數量。這一容量在緩衝區建立時被設定,並且永遠不能被改變 上界 limit 緩衝區的第乙個不能被讀或寫的元素。或者說,緩衝區中現存元素的計數。要是position已經到達limit的位置,此時再呼叫get 方法會報indexoutofbound c...

帶有緩衝區的流 Buffer

readerline 方法 public static void main string args throws ioexception br.close 關閉只需要關閉最外層的包裝流 裝飾者模式 轉換流 inputstreamreader public static void main strin...