php ob_flush,flush在ie中缓冲无效的解决方法


Posted in PHP onMay 09, 2010

PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。
flush() 函数不会对服务器或客户端浏览器的缓存模式产生影响。因此,必须同时使用 ob_flush() 和flush() 函数来刷新输出缓冲。
个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止
自己写了个小例子,想在页面每隔一秒输出一个数字。

按照网上的代码:

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

或者:

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

我发现在火狐里面生效,但在IE里不起作用,每次都是10个数字一起输出,这说明缓冲没有生效。

我又开始调整php.ini里面的output_buffering的设置,重启apache,依旧无效。

然后我看到了一段话:

一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。

罪恶的IE浏览器,问题就是TMD的多!

然后我修改了下程序,便正常了:

echo str_pad('',4096); 
for ($i = 0; $i < 10; $i++) { 
echo $i; 
ob_flush(); 
flush(); 
sleep(1); 
}

//ob_end_flush();//IE8下没起作用 
echo str_pad(" ", 256);//IE需要接受到256个字节之后才开始显示 for($i=0;$i<18;$i++) { 
echo $i; 
flush(); 
sleep(1); 
}
PHP 相关文章推荐
PHP二维数组的去重问题解析
Jul 17 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
Jun 19 PHP
php字符串过滤与替换小结
Jan 26 PHP
php实现的简单日志写入函数
Mar 31 PHP
php中的常用魔术方法汇总
Feb 14 PHP
php cookie 详解使用实例
Nov 03 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
php 各种应用乱码问题的解决方法
May 09 #PHP
php 输出双引号&quot;与单引号'的方法
May 09 #PHP
php for 循环语句使用方法详细说明
May 09 #PHP
php 函数使用方法与函数定义方法
May 09 #PHP
php 获取select下拉列表框的值
May 08 #PHP
PHP foreach循环使用详解与实例代码
May 08 #PHP
php 在文件指定行插入数据的代码
May 08 #PHP
You might like
给初学PHP的5个入手程序
2006/11/23 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
PHP面向对象教程之自定义类
2014/06/10 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
用javascript实现自定义标签
2007/05/08 Javascript
JavaScript 封装Ajax传递的数据代码
2009/06/05 Javascript
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
JS数组方法reduce的用法实例分析
2020/03/03 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python3 实现对图片进行局部切割的方法
2018/12/05 Python
python无序链表删除重复项的方法
2020/01/17 Python
python 对任意数据和曲线进行拟合并求出函数表达式的三种解决方案
2020/02/18 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
党员领导干部民主生活会批评与自我批评发言
2014/09/28 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
单位委托函范文
2015/01/29 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Vue深入理解插槽slot的使用
2022/08/05 Vue.js