如何在无限循环中回应某些东西?

时间:2012-06-08 11:24:47

标签: php infinite-loop shared-hosting

例如我有这样的事情:

<?php
  header("Content-Type: text/html; charset=UTF-8");
  set_time_limit(0); 
  ob_start("ob_gzhandler");

  while(true) :
    echo microtime(true)."<br>";
    ob_flush();
    flush(); 
    sleep(1);
  endwhile;

  ob_end_clean();
?>

此代码适用于我的localhost,页面上的每一秒都打印microtime(),但当我尝试在Shared Linux Hosting上运行相同的脚本时,没有打印任何内容,页面只有无限加载时间。

如何在无限循环中打印东西,在我的托管上?

也许我必须在php.ini文件中启用/禁用某些内容?任何想法?

1 个答案:

答案 0 :(得分:2)

这是Gzip等待所有数据,因此它可以压缩并发送它。

当你在共享主机上时,完全禁用它可能有点棘手。 所以我们可以:

使用PHP

在Linux主机上禁用Gzip
ini_set('output_buffering','on');
ini_set('zlib.output_compression', 0)

使用.htaccess

禁用Gzip
SetEnv no-gzip dont-vary



修改 你能在Linux主机上试试这个吗?

<?php
ini_set('output_buffering','on');
ini_set('zlib.output_compression', 0);
ob_implicit_flush();
for($i=0;$i<100;$i++) {
      echo $i;
      echo str_repeat(" ", 500);
      ob_flush();
      flush();
      sleep(1);
}
?>

这个可以在我的主人身上运行,看看它是否适用于你的主机会很有趣。