0

例如我有这样的事情:

<?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文件中启用/禁用某些东西?有任何想法吗?

4

1 回答 1

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);
}
?>

这个适用于我的主机,看看它是否适用于你的主机会很有趣。

于 2012-06-08T11:29:27.903 回答