首頁 > 後端開發 > php教程 > php使用ob_flush踩坑分析

php使用ob_flush踩坑分析

*文
發布: 2023-03-18 15:44:01
原創
1390 人瀏覽過

本文主要介紹了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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板