<?php
ob_start();
ob_end_clean();
ob_implicit_flush(true);
ob_end_flush();
for($i=1;true;$i++){
  echo $i.'<br/>';
  ob_flush();
  flush();
  sleep(1);
}
?>环境:rhel5.5+apache+php5.3.2+firefox3.6

解决方案 »

  1.   


    <?php
    ob_start();
    for($i=1;true;$i++){
      ob_flush();
      echo $i.'<br/>';
      flush();
      sleep(1);
    }
      

  2.   

    你确定你的代码是正确的吗?我在自己的环境上测试还是没用:
    <?php
    ob_start();
    for($i=1;$i<=5;$i++){
      ob_flush();
      echo $i.'<br/>';
      flush();
      sleep(1);
    }
    改成这样,可以看到,明显是一次性输出所有内容,而不是每一秒钟输出一部分内容。
      

  3.   

    如果cache的内容不达到一定的大小,它是不会在程序执行完毕前输出的!加上这句就好了:
    echo str_repeat('      ',256);
      

  4.   


    加了这个也没用,而且我加的是4096。<?php
    ob_start();
    for($i=1;$i<=5;$i++){
      ob_flush();
      echo str_repeat(' ',4096);
      echo $i.'<br/>';
      flush();
      sleep(1);
    }
    ?>另外还请大家看明白了,cache内容长度的要求是IE的特点,firefox并无这样的要求。不论怎么说,我加了4096了,还不够?
      

  5.   


    你的环境是什么,我确定你给的代码在我的环境中是不行的:环境:rhel5.5+apache+php5.3.2+firefox3.6。
      

  6.   

    配置文件中去掉了mod_deflate.so模板,请求页面时响应头还是gzip,这是怎么回事呢?
      

  7.   

    证实是gzip的问题,不过我在.htaccess文件关闭似乎没起作用,在httpd.conf文件中关闭重起才起作用的。不知道是不是.htaccess文件问题,还是不能通过.htaccess文件关闭gzip。