例如我有这样的事情:
<?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
文件中启用/禁用某些内容?任何想法?
答案 0 :(得分:2)
这是Gzip等待所有数据,因此它可以压缩并发送它。
当你在共享主机上时,完全禁用它可能有点棘手。 所以我们可以:
使用PHP
在Linux主机上禁用Gzipini_set('output_buffering','on');
ini_set('zlib.output_compression', 0)
使用.htaccess
禁用GzipSetEnv 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);
}
?>
这个可以在我的主人身上运行,看看它是否适用于你的主机会很有趣。