如下面這段代碼並不會逐個輸出,而是當瀏覽器籌夠必定字節數進行統一輸出,結果顯而易見,10秒後一次性輸出全部內容
for($i=0;$i<10;$i++){ echo $i.'</br>'; sleep(1); }
在Apache環境下能夠這樣解決此問題php
for($i=0;$i<10;$i++){ echo $i.'</br>'; sleep(1); ob_flush(); //關閉緩存 flush(); //刷新緩存即當即輸出了 }
nginx 裏面 flush 默認是無效的, 這個函數默認是做用在php做爲 apache模塊時纔有效,若是須要 nginx 裏面支持,須要加上一行nginx
header('X-Accel-Buffering: no');
實例代碼
header('Content-Type: text/event-stream'); // 以事件流的形式告知瀏覽器進行顯示 header('Cache-Control: no-cache'); // 告知瀏覽器不進行緩存 header('X-Accel-Buffering: no'); // 關閉加速緩衝 for($i=0;$i<10;$i++){ echo $i.'</br>'; sleep(1); ob_flush(); flush(); }