程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php使用ob_flush不能每隔一秒輸出原理分析

php使用ob_flush不能每隔一秒輸出原理分析

編輯:PHP綜合

本文實例講述了php使用ob_flush不能每隔一秒輸出原理。分享給大家供大家參考。具體分析如下:

實現功能:

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

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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved