前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >关于PHP缓冲控制在IE浏览器下的应用

关于PHP缓冲控制在IE浏览器下的应用

作者头像
魏杰
发布2022-12-23 15:43:34
发布2022-12-23 15:43:34
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

最近写程序的时候遇到一个问题,就是我用PHP控制浏览器缓冲,试了N次都无法实现想要的效果,具体程序见下面的代码:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
for ($i=0; $i<10; $i++) {
    echo "<BR>".$i;
    flush();
    sleep(1);
}
?>

上面这段程序是实现每隔1秒钟在浏览器上输出一个字符,但实际效果是程序执行完后才把所有字符输出到浏览器上,调试了好几次都不行。在网上搜索了N个技术文章都没有解决这个问题。最后从一篇文章上找到些灵感,那篇文章里写到flush()函数可能在微软IE浏览器的个别版本上不起作用。

于是我用FireFox浏览器试了一下,果然立即出现了想要的效果,我的浏览器是IE6,经过查阅相关资料,得知,IE的某些版本只有在字符串缓冲到256字节的时候才会将缓冲内容输出到浏览器上。

根据这个特点,我修改了一下程序,结果得到了预期的效果,具体代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
<?php
for ($i=0; $i<10; $i++) {
    echo "<BR>".$i.str_repeat(" ",256); //修改
    ob_flush(); //修改
    flush();
    sleep(1);
}
?>

在想要输出的字符串后加上256个空格,使字符串长度达到IE浏览器所规定的缓冲长度,再用ob_flush()函数配合flush()函数来将缓冲内容输出到浏览器上,这样基本上所有的浏览器就都可以正常得到预期的效果了。

这个问题让我捣鼓了2个多小时,该死的微软!!!

经验不敢独享,贴上来和各位一起分享,希望在大家的开发过程中如果遇到类似问题可以帮上忙!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2010-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档