[php] ob_flush()和flush()解析

  • 在php程序编写中,flush()的使用率还是挺高的,它在网页表现即时信息效果时发挥了极为重要的作用,是进度条实现代码里的关键语句。

    关于flash()的解释

    语法:

    flush();

    作用:

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

    问题:

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

    很简单的程序代码

    for ($i=10; $i>2; $i--)
    {
        echo $i.'<br />';
        ob_flush();
        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服务器,都可以正常的输出缓冲了。

“ob_flush()和flush()的区别。前者是把数据从PHP的缓冲中释放出来,后者是把不在缓冲中的或者说是被释放出来的数据发送到浏览器。所以当缓冲存在的时候,我们必须ob_flush()和flush()同时使用。正确使用的顺序是:先用ob_flush(),后用flush()
 
欢迎关注技术开发分享录: http://fenxianglu.cn/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天空还下着雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值