我有一个PHP脚本,只生成日志到客户端.
当我回应某些内容时,我希望它能够即时转移到客户端.
(因为在脚本处理过程中,页面是空白的)
,我已经打得四处ob_start()和ob_flush(),但他们没有工作.
什么是最好的解决方案?
PS:在echo通话结束时放一个同花牌有点脏......
编辑:Answers既不工作,PHP或Apache错误?
我们的代码与此类似:
<?php
ob_implicit_flush(true);
ob_end_flush();
foreach ($arrayOfStrings as $string) {
echo time_expensive_function($string);
}
?>
Run Code Online (Sandbox Code Playgroud)
在Apache中,这会在输出时将每个echo发送到浏览器.然而,在nginx/FastCGI中,由于nginx的工作方式(默认情况下),这不起作用.
有可能使这个工作在nginx/FastCGI上,如果是这样,怎么样?
<?php
for($i=0;$i<20;$i++)
{
echo 'printing...<br />';
ob_flush();
flush();
usleep(300000);
}
?>
Run Code Online (Sandbox Code Playgroud)
包含以下代码的网址:http://domainsoutlook.com/sandbox/delayed.php
我有一个专用服务器,所以我可以进行更改.我正在运行apache和nginx作为代理服务器.
我认为flush();至少可以使用Google/Stackoverflow告诉我的功能,但是在我的Windows WAMP(Windows,Apache,MySQL,PHP)系统上,它不起作用.
是否有一些PHP设置我必须设置为使flush()工作?
这是我的代码:
<?php
echo "Fun";
flush();
sleep(5);
echo "<br>Mo";
?>
Run Code Online (Sandbox Code Playgroud)
当脚本完成执行时(5秒后),代码只会输出所有内容.我不想要这个,我希望'Fun'立即显示,然后在5秒后'Mo'.
我已经尝试了其他类似的冲洗,ob_end_flush(); or ob_implicit_flush(true);但没有任何工作.有任何想法吗?