hello world 是如何輸出到瀏覽器的

iamcyan發表於2020-06-11
buffer 的概念

buffer 是一個記憶體地址空間,linux系統預設的大小一般為4096B(4kb),即一個記憶體頁。buffer 主要解決不同裝置之間儲存速度件間的差異,減少程式間的相互等待。php.ini 中的設定 為output_buffering = 4096

當我們執行echo 的時候,並沒有立即通過tcp將內容輸出到瀏覽器,而是會先將內容寫入到 php buffer。php buffer 的空間寫滿了之後,會通過作業系統將buffer中的資料交給tcp傳送給瀏覽器,所以資料的寫入依次是:

echo > php buffer > tcp buffer > browser

header( 'X-Accel-Buffering: no' );  //控制瀏覽器的buffer行為。
for ($i = 0; $i < 10000; $i++) {
 echo $i;
 ob_flush();
 flush();
 sleep(1);
}

參考:
rexmolo.github.io/2018/07/06/php-i...

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章