在脚本结束之前打印内容时,从php脚本打印结果的方法是什么?我尝试使用输出缓冲区,在回声之间放置sleep()进行测试,但结果总是在脚本执行后显示。它也是一个浏览器方面的东西吗?
答案 0 :(得分:4)
您可以在PHP脚本中尝试将所有当前输出刷新到用户的浏览器,这是对ob_flush
的调用,但实际上它还取决于许多其他内容。
HTTP服务器有自己的缓冲,浏览器可能无法立即呈现它收到的每个数据包。它就像一个不同级别的长缓冲区管道,在浏览器中看到任何内容之前都必须刷新,并且PHP输出缓冲区处于最高级别。
答案 1 :(得分:3)
是的,你可以这样做
<?php
echo "hello senad";
flush();
sleep(20);
echo "meskin";
?>
答案 2 :(得分:1)
PHP是服务器端。如果您正在创建一个网页,那么在脚本结束并传输之后,结果将始终显示在客户端上。
如果您在自己的计算机上运行脚本,那么我听说在执行期间打印一个脚本,在脚本完成后打印另一个脚本。尝试在打印和回显之间切换,看看结果如何。
答案 3 :(得分:1)
有两种解决方案:
1)在php.ini中取消激活output_buffering
2)使用循环时,请使用此示例:
for ($i = 1; $i <= 3; $i++) {
echo md5(rand())."<br />";
flush();
ob_end_flush();
sleep(1);
}
答案 4 :(得分:0)
PHP一次加载一个页面然后显示它。使用flush()
在脚本加载时显示输出。
答案 5 :(得分:0)
很好的问题..当我想做类似的事情时(比如登录动作)我只使用AJAX。而且我知道这可能不是你想要的但是听我说..我到目前为止已经遇到过这个问题4次并且我已经使用了AJAX,因此我能够放一个预加载器(这真的很酷,很有帮助:))
通过“使用ajax”我的意思是如果你有4个动作来显示4个ajax请求。我知道这不是最优雅的解决方案(因为你做了很多额外的工作)但它是一个很好的设计方案。