php使用ob_flush踩坑分析

來源:互聯網
上載者:User
本文主要介紹了php使用ob_flush不能每隔一秒輸出原理,較為詳細的分析了php使用ob_flush的相關原理與Linux下使用cli方式的使用方法。希望對大家有所協助。

具體分析如下:

實現功能:

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

php.ini配置為:

版本5.3

implicit_flush = offoutput_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的用法詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.