php for循环时间控制没秒钟输出一次

ruanshiji 2012-03-31 04:43:42
<?php
ob_end_clean();
echo str_pad(' ', 256);
for ($i=10; $i>0; $i--)
{ echo $i;
flush();
sleep(5);
}
?>
网上找到这样一段代码,想每秒钟间隔输出!结果发现在火狐里没用,ie里却可以,坑爹啊,不要告诉我,php有浏览器差异!
...全文
664 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruanshiji 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

花了点时间查了下这个问题,大概是这样的:默认情况下b/s结构为浏览器主动拉数据,ie浏览器在接受256个字节的数据后就开始显示信息了,火狐则会等服务端程序执行完毕才一并显示
我们可以加上一个http头让b/s结构变成服务器主动推送的的模式,这样火狐在接收到数据就开始显示,ie接收到256个字节的数据才开始显示:
PHP code
header("Content-type: multipar……
[/Quote] 6楼的代码在火狐里还是没用啊!他也是等时间过了一次性输出的啊!
lession 2012-03-31
  • 打赏
  • 举报
回复
原来如此啊
代码如诗 2012-03-31
  • 打赏
  • 举报
回复
花了点时间查了下这个问题,大概是这样的:默认情况下b/s结构为浏览器主动拉数据,ie浏览器在接受256个字节的数据后就开始显示信息了,火狐则会等服务端程序执行完毕才一并显示
我们可以加上一个http头让b/s结构变成服务器主动推送的的模式,这样火狐在接收到数据就开始显示,ie接收到256个字节的数据才开始显示:
header("Content-type: multipart/x-mixed-replace;");
echo str_pad(' ', 256);//如果去掉这一行,会出现和楼主代码相反的效果
for($i=0;$i<10;$i++){
sleep(1);
echo $i;
ob_flush();
flush();
}

上面的代码在火狐和ie上面是一样的效果,表达能力有限,参考下面两篇文章吧
http://www.laruence.com/2008/04/16/118.html
http://blog.csdn.net/gmstart/article/details/7064034
xuzuning 2012-03-31
  • 打赏
  • 举报
回复
php 没有浏览器差异

html 有浏览器差异

您并没有如实反映情况!
jdgdf566 2012-03-31
  • 打赏
  • 举报
回复
你可以使用ajax实现你的效果。
jdgdf566 2012-03-31
  • 打赏
  • 举报
回复
浏览器显示页面的时候,有的是全部传输完后再显示,有的不是。php没有问题。
改一下昵称 2012-03-31
  • 打赏
  • 举报
回复
php没有针对浏览器的差异。只是你的火狐设置有些问题,代码没问题
xiaofeizoudanqi 2012-03-31
  • 打赏
  • 举报
回复
因为 你太傻

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧