这是我的问题:
如何在加载循环时更新浏览器(chrome,firefox)上的页面,例如:
<?php
$var = 0;
while($var != 10){
echo $var;
$var++;
sleep(1);
}
?>
页面不更新,只有在完成php脚本的执行后,Anything可以帮助我吗?感谢。
答案 0 :(得分:1)
你可以这样做:
<?php
if (ob_get_level() == 0) ob_start();
for ($var = 0; $var <= 10; $var++) {
echo $var;
ob_flush();
flush(); // echo output buffer to client
sleep(1);
}
ob_end_flush();
?>
为了完成这项工作,您应该在PHP设置中禁用输出压缩,如下所示:
zlib.output_compression = Off
或尝试在代码中禁用它(如果允许):
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
答案 1 :(得分:0)
这基本上是不可能的。
PHP在其引擎中使用自己的输出缓冲(php://output
)。该缓冲区充满了您在代码中回显的数据。一旦引擎到达脚本的末尾,它将刷新整个缓冲区并将其附加到Web服务器开始创建的头信息中(假设它是网络服务器,它准备了对浏览器和PHP的响应)是添加实际内容的人。)
另一个限制是某些浏览器会等到整个HTTP请求完成后再开始渲染网站。不是所有人都这样做,而是一些人。
对于真实的实时动作,我建议使用AJAX或更现代的WebSockets。第二个更加活跃,因为它不会像AJAX一样重新加载。我建议你重新考虑一下你要做什么,以及它是否有必要。
如果您不明白任何内容,我建议您查看一些维基百科文章: