php在Nginx環境下進行刷新緩存立即輸出,實現常駐進程輪詢。


以下面這段代碼並不會逐個輸出,而是當瀏覽器籌夠一定字節數進行統一輸出,結果顯而易見,10秒后一次性輸出所有內容
for($i=0;$i<10;$i++){
            echo $i.'</br>';
            sleep(1);
        }

 在Apache環境下可以這樣解決此問題

for($i=0;$i<10;$i++){
            echo $i.'</br>';
            sleep(1);
            ob_flush(); //關閉緩存
            flush();    //刷新緩存即立即輸出了
}

  nginx 里面 flush 默認是無效的, 這個函數默認是作用在php作為 apache模塊時才有效,如果需要 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();
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM