本文主要介紹了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_flush踩坑分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!