在我的旧主机上,我可以循环播放并回显循环中的内容。当代码运行该循环时,我正在回显的文本会立即出现,我可以看到发生的事情。
现在,在我当前的主机上,如果我有一个这样的循环,我只看到循环完成后回显的文本,并且脚本完全执行完毕。
我只是想知道是否有人知道为什么?
谢谢!
编辑:输出缓冲和输出压缩已关闭。
答案 0 :(得分:1)
您使用flush()吗?如果你这样做,也许服务器会缓存响应并立即发送所有内容,请问你的webhoster
答案 1 :(得分:1)
输出缓冲默认情况下在服务器配置中打开。正如Tobias所说,请咨询webhost。
答案 2 :(得分:1)
如前所述,输出缓冲很可能是由php.ini中的webhost启用的。
我相信您可以自己检查一下(但是,虚拟主机可以禁用对该功能的访问):
echo ini_get('output_buffering');
编辑:一些有用的链接
答案 3 :(得分:1)
正如其他人所说的,默认情况下,output buffering似乎在您的主机上处于启用状态。
您可以使用ob_end_flush()(发送任何缓冲输出)或ob_end_clean()(将丢弃任何输出)以编程方式将其关闭。在代码的早期调用其中一个函数(例如,在脚本的顶部,或者在某个配置文件中),至少可以让你获得部分功能。
如果你想全局关闭它,你也可以在php.ini中关闭输出缓冲,或者在.htaccess文件中设置php_value output_buffering Off
。
正如Tobias P.所指出的那样,你可以使用flush()来(试图)强制连接PHP(apache,CGI等)来刷新输出。