林中侠客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于flash()的解释

语法:

flush();

作用:

刷新PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。

问题:

flush()刷新为什么不能输出缓冲?

很简单的程序代码

for ($i=10; $i>2; $i--)
{
echo $i.'<br />';
flush();
sleep(1);
}

其运行结果应该是从10到3,依次输出到浏览器里,效果图如下:

上述代码,如果没有flush();这句,则10到3的数字会一起输出到浏览器。

然而就是上述的代码,我在本地测试成功,但是上传到空间里后却无效了,这是怎么回事?

后来我查了相关的资料,发现flush();的使用还需要注意一些问题,这些问题可能在我们没有遇到的时候我们是不会去想到的。那就是flush()需要与ob_flush()配合着使用,否则在linux系统里不会输出缓冲。

而flush()与ob_flush()配合着使用的同时,写法上也需要讲究,那就是先写ob_flush();再写flush();,如下:

ob_flush();
flush();

好了,问题的症状就在这里,于是,上述代码就应该写成如下所示:

for ($i=10; $i>2; $i--)
{
echo $i.'<br />';
ob_flush(); //此句不能少
    flush();
sleep(1);
}
ob_end_flush();

这样,无论是在哪个系统,哪个web服务器,都可以正常的输出缓冲了。

posted on 2014-11-10 16:30  林中侠客  阅读(376)  评论(0编辑  收藏  举报