首頁  >  文章  >  後端開發  >  php使用ob_flush踩坑分析

php使用ob_flush踩坑分析

*文
*文原創
2017-12-27 10:41:581349瀏覽

本文主要介紹了php使用ob_flush不能每隔一秒輸出原理,較為詳細的分析了php使用ob_flush的相關原理與Linux下使用cli方式的使用方法。希望對大家有幫助。

具體分析如下:

實作功能:

瀏覽器每隔一秒輸出一個數字。

php.ini設定為:

版本5.3

implicit_flush = off
output_buffering = off

另:查看output_buffering是否打開,可以:

var_dump(ini_get('output_buffering'));

好我們再來看看這段程式碼:


<?php
  $i = 3;
  ob_start();
  while ($i--) {
    echo $i, "<br />";
    ob_flush();
    flush();
    sleep(1);
  }
  ob_end_clean();
?>


可為什麼:這段程式碼不能每隔一秒輸出呢? ?

原因分析:

apache運作原理:當你造訪一個位址(傳送請求)後,apache啟動PHP,那麼php執行是頁面層級的,也就是如果有可執行的程式碼:它全部執行完後再丟給apache,apache再丟給browser顯示結果

如何實作?

如果是cli 顯示結果方式又不一樣,那裡不一樣呢?

linux cmd:
php5 test.php

由php直接執行,不經過apache,web service,就可以實現:


<?php
  $i = 3;
  while ($i--) {
    echo $i, "\n";
    sleep(1);
  }
  ob_end_clean();
?>

相關推薦:

php ob快取介紹以及ob函數詳解

#PHP ob緩衝淺析與理解

深入php ob_start的用法詳解

#

以上是php使用ob_flush踩坑分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn