更新这是一个问题,我有:PHP的循环不要在浏览器
如何更新浏览器的页面(浏览器,Firefox)时,回路的负载,例如:
<?php
$var = 0;
while($var != 10){
echo $var;
$var++;
sleep(1);
}
?>
页不要更新,只有在PHP脚本执行完成后,任何东西都可以帮助我?谢谢。
更新这是一个问题,我有:PHP的循环不要在浏览器
如何更新浏览器的页面(浏览器,Firefox)时,回路的负载,例如:
<?php
$var = 0;
while($var != 10){
echo $var;
$var++;
sleep(1);
}
?>
页不要更新,只有在PHP脚本执行完成后,任何东西都可以帮助我?谢谢。
你可以这样说:
<?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');
这基本上是不可能的。
PHP在其引擎中使用自己的输出缓冲(php://output
)。该缓冲区会填充您在代码中回显的数据。一旦引擎到达脚本末尾,它将刷新整个缓冲区并将其附加到网络服务器开始创建的头信息(想象一下,网络服务器是预先准备好对浏览器和PHP的响应的网页服务器是添加实际内容的人)。
另一个限制是某些浏览器等到整个HTTP请求完成后才开始渲染站点。并非所有这些,但一些。
对于真实的活动,我会推荐AJAX或更现代的WebSockets。第二个更生动,因为它不会像AJAX一样重新加载。我建议你重新考虑你想要做什么,如果它是必要的。
一些维基百科文章,我建议你看看,如果你不明白什么:
PHP的服务器上运行 - 如果你需要在浏览器窗口中“实时”的东西,你需要使用浏览器中运行的东西(例如Javascript)。 – Floris
为什么你会在那里使用'sleep()'? – randak
@randak也许只是为了好玩..我也这样做过..就像测试longpolling .. – Hardy