站長資訊網
最全最豐富的資訊網站

php中的輸出控制方法

緩沖輸出

 

<?php  for ($i=10; $i>0; $i--)  {   echo $i;   flush();   sleep(1);  }  ?>

 按照php手冊里的說法

該函數將當前為止程序的所有輸出發送到用戶的瀏覽器。

上面的這段代碼,應該隔一秒鐘輸出一次$i。但是實際中卻不一定是這樣。有可能是等了10秒鐘后,所有的輸出同時呈現出來。

好,我們來改一下這段代碼,改成

 

<?php  ob_end_clean();//修改部分  for ($i=10; $i>0; $i--)  {   echo $i;   flush();   sleep(1);  }  ?>

 嘿,加了這一句ob_end_clean();,居然就OK了。實際上,我們把ob_end_clean()換成ob_end_flush()也一樣OK。

我再來改一改。

 

<?php  for ($i=10; $i>0; $i--)  {   echo $i;   ob_flush();//修改部分   flush();   sleep(1);  }  ?>

 運行一下,是不是發現$i也隔一秒輸出一次了?這是為什么呢?
別急,我們來看看php.ini。

打開php.ini,搜索output_buffering,我們會看到類似這樣的設置 output_buffering = 4096。正如它的名字output_buffering一樣,這個設置的作用就是把輸出緩沖一下,緩沖大小為4096bytes.

在我們的第一段代碼里,之所以沒有按預期的輸出,正是因為這個output_buffering把那些輸出都緩沖了。沒達到4096bytes或者腳本結束,輸出是不會被發送出去的。

而第二段代碼中的ob_end_clean()和ob_end_flush()的作用,就是終止緩沖。這樣就不用等到有4096bytes的緩沖之后才被發送出去了。

第三段代碼中,用了一句ob_flush(),它的作用就是把緩沖的數據發送出去,但是并不會終止緩沖,所以它必須在每次flush()前使用。

如果不想使用ob_end_clean(),ob_end_flush()和ob_flush(),我們就必須把php.ini里的output_buffering設得足夠小,例如設為0。需要注意的是,如果你打算在腳本中使用ini_set(”output_buffering”,”0″)來設置,那么請停下來吧,這種方法是不行的。因為在腳本一開始的時候,緩沖設置就已經被載入,然后緩沖就開始了。

可能你會問了,既然ob_flush()是把緩沖的數據發送出去,那么為什么還需要用flush()???直接用下面這段代碼不行嗎??

<?php  for ($i=10; $i>0; $i--)  {   echo $i;   ob_flush();   sleep(1);  }  ?>

  

請注意ob_flush()和flush()的區別。前者是把數據從PHP的緩沖中釋放出來,后者是把不在緩沖中的或者說是被釋放出來的數據發送到瀏覽器。所以當緩沖存在的時候,我們必須ob_flush()和flush()同時使用。

那是不是flush()在這里就是不可缺少的呢?不是的,我們還有另外一種方法,使得當有數據輸出的時候,馬上被發送到瀏覽器。下面這兩段代碼就是不需要使用flush()了。(當你把output_buffering設為0的時候,連ob_flush()和ob_end_clean()都不需要了)

 

<?php  ob_implicit_flush(true);  for ($i=10; $i>0; $i--)  {   echo $i;   ob_flush();   sleep(1);  }  ?><?php  ob_end_clean();  ob_implicit_flush(true);  for ($i=10; $i>0; $i--)  {   echo $i;   sleep(1);  }  ?> 

請注意看上面的ob_implicit_flush(true),這個函數強制每當有輸出的時候,即刻把輸出發送到瀏覽器。這樣就不需要每次輸出(echo)后,都用flush()來發送到瀏覽器了。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
97久久精品国产精品青草| 亚洲愉拍99热成人精品热久久| 亚洲国产精品嫩草影院在线观看| 日韩精品一区二区三区中文3d | 日本一区二区三区精品中文字幕| 国产精品免费在线播放| 91麻豆国产精品91久久久| 色噜噜亚洲精品中文字幕| 亚欧乱色国产精品免费视频| 日韩一级精品视频在线观看| 99久久精品国产亚洲| 亚洲精品tv久久久久| 亚洲 欧洲 日韩 综合在线| 国产成人啪精品视频免费网| 黑人粗长大战亚洲女2021国产精品成人免费视频| 久久精品国产精油按摩| 中文字幕久精品免费视频| 老司机成人精品视频lsj| 国产精品亚洲mnbav网站| 亚洲日韩国产精品乱| 亚洲AV无码成人精品区大在线| 国产日韩美国成人| 日韩加勒比一本无码精品| 日韩爽爽视频爽爽| 秋霞日韩久久理论电影| 日韩视频一区二区三区| 日韩亚洲Av人人夜夜澡人人爽| 日韩人妻无码精品专区| 国产日韩久久久精品影院首页 | 少妇人妻精品一区二区三区| 国产韩国精品一区二区三区| 国产91在线|日韩| 精品91一区二区三区| 精品视频午夜一区二区| 亚洲精品tv久久久久久久久久| 国产福利电影一区二区三区,亚洲国模精品一区 | 久热中文字幕在线精品首页| 国产精品国色综合久久| 久久精品道一区二区三区| 日韩一区精品视频一区二区| 久久精品国产精品亚洲毛片|