php 中的 Output Control 函數

來源:互聯網
上載者:User

標籤:沒有   重新整理   sleep   利用   exit   調用   manual   tco   dex   

 

先看一個簡單的例子

<?php    ob_start();    echo 111;    ob_clean();    echo 222;

 

ob_start()開啟ob緩衝,然後111放進了ob緩衝, 再調用ob_clean()清除緩衝,最後輸出的結果是222。

原理:頁面執行到最後, 會把ob緩衝的資料(如果有的話)強制重新整理到程式緩衝, 然後通過apache對資料封裝成http響應包, 返回給瀏覽器。

注意:header頭資訊放程式緩衝,如果沒有ob緩衝,則所有資料直接放程式緩衝。

 

更多api參考 :  http://php.net/manual/zh/ref.outcontrol.php

 

 

 

<?phpfor($i = 0; $i < 3; $i++){    echo $i;    sleep(1);    flush();}

 

flush 只是重新整理到瀏覽器緩衝,  然後程式結束時再一起輸出。

我把瀏覽器緩衝佔滿就能看到效果.

<?phpob_end_clean(); //php.ini中設定了開啟ob緩衝, 所以關閉一下.echo str_repeat(‘  ‘,1024);for($i = 0; $i < 5; $i++){    echo $i;    sleep(1);    flush();}

 

 

 ob緩衝中能存放哪些資料.

ob_start() 開始到 ob_get_contents()之間返回給瀏覽器的資料。

 

實現頁面靜態化可以使用正則替換, 也可以利用ob實現頁面靜態化。

<?php    if(file_exists(‘index.html‘) && filemtime(‘index.html‘) + 60 >= time()){        echo file_get_contents(‘index.html‘);        exit;    }    ob_start();?>   //這裡寫原來的代碼<?php    $html_str = ob_get_contents();    file_put_contents(‘index.html‘, $html_str);?>

 

如果內容修改, 我們看不到最新內容, 這是我們可以簡單最佳化, 每過60秒重新整理一次。

 

php 中的 Output Control 函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.