关于延时的问题

tfxg 2005-10-26 12:20:38
先看代码
for($i=0;$i<5;$i++)
{
sleep(3);
echo "$i<br>";
flush();
}
测试的时候,总是做整个循环完才将echo的内容显示出来,但是如果用php直接执行就不会完成整个循环才显示,我想是apache的原因,但不知道如何改,请高手帮忙
...全文
392 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
tfxg 2005-10-28
  • 打赏
  • 举报
回复
可以发钱了,呵呵
Gdj 2005-10-27
  • 打赏
  • 举报
回复
行了,先谢谢
为什么要加
for($i=0; $i<500; $i++)
{
echo " ";
}
这个呀
请说说个理
-------------------------------------------
严重怀疑你没有看帖。算了。
tfxg 2005-10-27
  • 打赏
  • 举报
回复
为何这样的动作不行呢
<?php
ob_end_flush();

for($i=0; $i<500; $i++)
{
echo " ";
}
echo "<script language='javascript'>window.location.href='/index.php?PHPSESSID=$PHPSESSID';</script>";
flush();
sleep(10);
}
?>

非要等到10秒之后才调转到新的页面
tfxg 2005-10-27
  • 打赏
  • 举报
回复
行了,先谢谢
为什么要加
for($i=0; $i<500; $i++)
{
echo " ";
}
这个呀
请说说个理
zhiin1 2005-10-27
  • 打赏
  • 举报
回复
为什么要加
for($i=0; $i<500; $i++)
{
echo " ";
}
这个呀
请说说个理
--------------------------


浏览器默认有几百个字节的 必须把它填满了才可以一个一个输出
tfxg 2005-10-27
  • 打赏
  • 举报
回复
如果你要立即显示,那在正式输出前,先输出几k的不显示的字符吧。比如在<head>无数空格...</head>这样
wjjchen 2005-10-27
  • 打赏
  • 举报
回复
<?
for ($i=0;$i<3;$i++)
{
echo $i."<br>";
flush();
sleep(5);
}
?>
tfxg 2005-10-26
  • 打赏
  • 举报
回复
在浏览器打开
等待一段时间后显示:
0<br>1<br>2<br>3<br>4<br>
tfxg 2005-10-26
  • 打赏
  • 举报
回复
直接用PHP执行
php test.php
0<br> 等待 1<br> 等待 2<br> 等待 3<br> 等待 4<br>
zhiin1 2005-10-26
  • 打赏
  • 举报
回复
<?php
ob_end_flush();

for($i=0; $i<500; $i++)
{
echo " ";
}
for($i=0;$i<5;$i++)
{
sleep(1);
echo "$i<br>";
flush();
}
?>
tfxg 2005-10-26
  • 打赏
  • 举报
回复
事情还没有解决
Gdj 2005-10-26
  • 打赏
  • 举报
回复
sleep时是不占带宽的啦……只是占了一个连接。
做serverpush时有用的。
xuzuning 2005-10-26
  • 打赏
  • 举报
回复
这是一个毫无意义的事情!
为什么要让php断断续续的工作,占着带宽不让人家访问呢?

用ajax可以很轻松的完成
Gdj 2005-10-26
  • 打赏
  • 举报
回复
可以的。照我上面的做。不然我给你一个例子。

<?php
ob_implicit_flush(true);
echo "<html>\r\n<head>\r\n<title>Untitled Document</title>".str_repeat("\r\n",4096)."\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\">\r\n</head>\r\n\r\n<body>\r\n\r\n";
for($i=0;$i<5;$i++)
{
echo "$i<br>";
sleep(3);
}
?>
tfxg 2005-10-26
  • 打赏
  • 举报
回复
在服务器试 telnet localhost 80
get test.php
都行,在浏览器就是不行
tfxg 2005-10-26
  • 打赏
  • 举报
回复
还不行
Gdj 2005-10-26
  • 打赏
  • 举报
回复
如果你要立即显示,那在正式输出前,先输出几k的不显示的字符吧。比如在<head>无数空格...</head>这样
Gdj 2005-10-26
  • 打赏
  • 举报
回复
<?php
ob_implicit_flush(true);
echo "OK";
sleep(20);
?>

你看,肯定是20秒后才显示出来。嘿嘿嘿
Gdj 2005-10-26
  • 打赏
  • 举报
回复
别人可没说要给你分啊。
ob_implicit_flush(true);
没用的。

ie是这样的了。它不是没收到显示的信息。但是他会一直存着,一直下载到4k(应该是4k)或是连接中段后才会显示出来。如果有表格,则会在表格全下载后显示。
coolstr 2005-10-26
  • 打赏
  • 举报
回复
哈哈哈,就这样赚了100分。高兴中.......
加载更多回复(1)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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