在php程序编写中,flush()的使用率还是挺高的,它在网页表现即时信息效果时发挥了极为重要的作用,比如之前写的php实现限制文件下载速度的代码实例,flush()就起了举足轻重的作用,是进度条实现代码里的关键语句。

关于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服务器,都可以正常的输出缓冲了。

最新文章

  1. mac下打开FTP服务
  2. Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
  3. Java经典实例:比较浮点数
  4. junit 使用
  5. Thread-0&quot; kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
  6. 详细安装ss的过程(vultr)
  7. java web项目自动部署到Tomcat的原因
  8. 网络html查看器
  9. Target runtime Apache Tomcat v7.0 is not defined.
  10. 路由设置 windows
  11. Android NDK 和 OpenCV 整合开发总结(3)
  12. ubuntu下30天自制操作系统还在继续学习中
  13. [转载]C header files matching your running 
  14. zabbix安装笔记
  15. 提取 linux 文件目录结构
  16. Spring之AOP在XML中的配置方法
  17. windows 环境下 eclipse + maven + tomcat 的 hello world 创建和部署
  18. 父级div宽度100%,子级一个div宽度固定,另一个宽度自适应
  19. pandas读取MySql/SqlServer数据 (转)
  20. 现有工程中集成Cordova

热门文章

  1. Codefroces Gym 100781A(树上最长路径)
  2. Windows通过DOS命令进入MYSQL的方法
  3. android Activity的启动模式
  4. andriod 新建Activity_ Form
  5. 覆盖率测试工具gcov的前端工具_LCOV
  6. 为测试框架model类自动生成xml结果集
  7. ADO.NET增删改-------跟查不一样
  8. web错误
  9. ContentProvider官方教程(6)provider支持的数据类型
  10. #查找列表中元素,移除每个元素的空格,并查找以 a或A开头 并且以 c 结尾的所有元素