我正在尝试熟悉我正在执行的项目的PHP的flush()函数,我自己编写了一些脚本,然后将它们上传到我拥有的某些Web空间中;但似乎他们都不起作用。我从对PHP.net的评论中挑选了一个,并尝试了它:
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
sleep(1);
}
echo 'End ...<br />';
显然脚本STILL无法正常工作。
然后,我读到一条评论说:
因此,我决定在使用Linux(Ubuntu 12.04)的计算机上请求该网页,因为该计算机未安装任何防病毒软件;而且效果很好!
我不知道这是否与防病毒软件有关?或Windows中其他一些阻止flush()实现其预期目的的奇怪机制,我在两台计算机上都使用了相同的浏览器(Firefox 14.0.1),因此我怀疑可能是这样。
所以我想我的真正问题是:是否有人对防病毒软件有任何了解,无法阻止flush()实现其预期目的(因为我似乎无法在线找到有关它的任何信息)?如果是这样,有什么办法可以解决?
编辑:为了明确起见,我确定这不是服务器端,我有一个运行Linux的外部Web服务器,我不在Linux或Windows Machine上本地托管这些脚本。
EDIT2:我在Linux笔记本电脑上的一个 friend 住所附近尝试了这个,我设法使其在我的住所上正常工作,奇怪的是,刷新代码在他们的住所也没有起作用(相反,加载它花了很长时间,并且全部在一次)(这很奇怪,因为它可以在我家里的笔记本电脑上使用),所以我不确定路由器是否与flush()函数正常工作有关(我真的在网上找不到任何东西),因为那是我唯一想到的可能会干扰它。
否则,我自己尝试解决此问题没有任何进展,这绝对与服务器端无关,这很奇怪,因为我似乎发现的大多数信息都在谈论当flush()时服务器是问题。功能不起作用:/
巧合的是,我还在家里运行Norton(而不是AVG)的PC上尝试了此功能,但效果并不理想,但并非100%。
最佳答案
有几件事可能会阻止立即显示输出,包括:
flush
阻止的)由于
flush
无法控制此列表中的所有内容,因此实际上不能保证程序会按预期运行。所有这些都在
flush
的注释中提到:关于PHP flush()显然可以在我的Linux机器上工作,但不能在我的Windows机器上工作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11816815/