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

2015-01-24信息快讯网

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

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中flush()、ob_flush()、ob_end_flush()的区别介绍
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
PHP逐行输出(ob_flush与flush的组合)
linux系统上支持php的 iconv()函数的方法
php中mysql模块部分功能的简单封装
php XMLWriter类的简单示例代码(RSS输出)
简单的PHP缓存设计实现代码
php利用iframe实现无刷新文件上传功能的代码
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
PHP setcookie设置Cookie用法(及设置无效的问题)
关于PHP中Object对象的笔记分享
php设计模式 Observer(观察者模式)
php获取后台Job管理的实现代码
PHP中遍历stdclass object的实现代码
php利用cookie实现访问次数统计代码
Views rows style模板重写代码
php 仿Comsenz安装效果代码打包提供下载
php 各种应用乱码问题的解决方法
php 输出双引号"与单引号'的方法
php for 循环语句使用方法详细说明
php 函数使用方法与函数定义方法
php 获取select下拉列表框的值
php读取javascript设置的cookies的代码
php session和cookie使用说明
PHP正则的Unknown Modifier错误解决方法
用PHP ob_start()控制浏览器cache、生成html实现代码
php遍历目录viewDir函数
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
用PHP的ob_start() 控制您的浏览器cache
php flush类输出缓冲剖析
©2014-2024 dbsqp.com