这里有些奇怪,我会输出一个页面并逐个显示,直到所有内容都被加载(类似于Wordpress更新/重新安装过程的工作方式):
<html>
<body>
<?php
for( $i=0; $i<100; $i++)
{
echo 'HELLO';
}
sleep(10);
echo '<p></p>';
for( $i=0; $i<100; $i++)
{
echo 'THERE';
}
sleep(10);
echo '<p></p>';
for( $i=0; $i<100; $i++)
{
echo 'HOW ';
}
sleep(10);
echo '<p></p>';
for( $i=0; $i<100; $i++)
{
echo 'ARE U';
}
sleep(10);
echo '<p></p>';
奇怪的是,它等待整个页面,然后显示它。哪些变量/配置会影响此行为?
答案 0 :(得分:6)
我不知道你认为php如何工作,但它只是服务器端,你期望在客户端部分更新。 PHP不像那样工作。
当你调用那个php脚本时,php解释器开始执行它,将输出放到临时位置,然后使用sleep函数,php解释器等待直到达到毫秒,然后继续执行,连接临时位置的输出,继续...在完成所有脚本执行后,php将整个输出发送给客户端。
如果您需要在页面上进行部分更新,则需要输入异步调用和ajax的世界。
答案 1 :(得分:5)
它缓冲输出并仅在页面加载完成后发送它,或者在缓冲几千字节之后发送。您可以通过在ob_start()
和ob_end_flush()
中完整包装代码来控制此功能,或者在这种情况下,在每次睡眠前调用flush()
。
答案 2 :(得分:1)
php是服务器端。您是否尝试使用javascript&#39; setTimeout()
函数?
这是一个在5秒延迟后重复10次的字符串示例。
<script>
setTimeout(test, 5000);
function test(){
for (var i=0;i<10;i++){
document.write("test <br />");
}
}
</script>