<?php
ob_implicit_flush(true);
for ($i=10; $i>0; $i--)
{
echo $i;
ob_flush();
sleep(1);
}
?>
<?php
ob_end_clean();
ob_implicit_flush(true);
for ($i=10; $i>0; $i--)
{
echo $i;
sleep(1);
}
?>
请注意看上面的 ob_implicit_flush(true),这个函数强制每当有输出的时候,即刻把输出发
送到浏览器。这样就不需要每次输出(echo)后,都用 flush()来发送到浏览器了。
以 上 所 诉 可 能 在 某 些 浏 览 器 中 不 成 立 。 因 为 浏 览 器 也 有 自 己 的 规 则 。 我 是 用
Firefox1.5,IE6,opera8.5 来测试的。其中 opera 就不能正常输出,因为它有一个规则,就是
不遇到一个 HTML 标签,就绝对不输出,除非到脚本结束。而 FireFox 和 IE 还算比较正常
的。
最后附上一段非常有趣的代码,作者为 PuTTYshell。在一个脚本周期里,每次输出,都会
把前一次的输出覆盖掉。
以下代码只在 firefox 下可用,其他浏览器并不支持 multipart/x-mixed-replace 的 Content-
Type.
<?php
header('Content-type: multipart/x-mixed-replace;boundary=endofsection');
print "\n--endofsection\n";
$pmt = array("-", "\\", "|", "/" );
for( $i = 0; $i <10; $i ++ ){
sleep(1);
print "Content-type: text/plain\n\n";
print "Part $i\t".$pmt[$i % 4];
print "--endofsection\n";