我在Windows上运行xampp portable的php脚本。该脚本需要一分钟。最近,该脚本存在flush()问题,因为echo语句不会立即显示。该脚本以前工作正常,没有缓冲问题。
有趣的是,我运行了相同的脚本将xampp portable复制到另一个系统,并且flush语句没有任何问题。相同的代码,相同的xampp便携式。
可能是什么原因?
答案 0 :(得分:1)
制作脚本的第一行ob_implicit_flush();
。
或
更改 php.ini 文件设置implicit_flush = On
。
来自文档:
implicit_flush布尔值,默认为FALSE。将此更改为TRUE会告诉您 PHP告诉输出层每次都自动刷新自己 输出块。这相当于调用PHP函数flush() 在每次调用打印或回显之后以及每个HTML 块。
在Web环境中使用PHP时,启用此选项 严重的性能影响,通常建议用于 仅用于调试目的。
答案 1 :(得分:1)
我阅读了其他回复,并坚持认为您的家庭环境和工作环境是一样的。但是,您可以看到 存在差异。这种观点确实有助于(至少对我而言)调查问题。
由于您没有提供有关该问题的许多详细信息,我将尝试以下清单:
phpinfo()
的结果。数据强>
您是否真的在相同数据上测试脚本? PHP手册中描述了许多微妙的问题:
即使是浏览器也可以在显示之前缓冲其输入。例如,Netscape缓冲文本,直到它收到行尾或标记的开头,并且在看到最外面的表的标记之前它不会呈现表。
某些版本的Microsoft Internet Explorer只会在收到256字节的输出后才开始显示该页面,因此您可能需要在刷新之前发送额外的空格以使这些浏览器显示该页面。
或
http://www.php.net/manual/en/function.ob-flush.php#90529(评论者指出了您可能遇到的许多问题)
尝试使用虚拟明文数据而不是HTML。您可以尝试输出简单的行,如当前时间和检查脚本的行为。
<强>浏览器强>
答案 2 :(得分:0)
我认为它可能是您的浏览器。您是否清理过Iron Portable浏览器的临时设置?
答案 3 :(得分:0)
当你使用gzip时会发生这种情况并且已经发送了一些输出,所以浏览器很难解决这个问题,我总是使用这段代码
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)
{ob_start('ob_gzhandler'); ob_start();}
else
ob_start();
答案 4 :(得分:0)
您还没有提到系统运行的Windows版本。系统完全相同吗?
您还说您正在运行XAMPP的便携版本,如果您使用的是笔式驱动器/重击式驱动器,则数据传输速度可能因USB速度而有所不同。
我遇到了类似的问题,第一个系统有USB传统端口,第二个我测试的有2个或更多端口。
速度和处理时间根据系统而变化,而一个系统耗时20秒,其他系统耗时近60秒。
慢速系统产生了不良结果[我正在处理图像处理器]。
我猜你的情况类似,并且必须对系统重要事件做很多事情。
干杯 克兰河
答案 5 :(得分:0)
我发现问题出在防病毒软件上。我最近从Avast转到了Bitdefender。当我切换回Avast时,问题奇迹般地消失了。所以,我认为杀毒软件也是一个因素。