这里有一些奇怪的地方,我认为这会输出一个页面并逐部分显示,直到所有内容都加载完毕(类似于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>';
奇怪的是,它等待整个页面,然后显示它。什么变量/配置会影响这种行为?
我不知道你认为php是如何工作的,但它只是服务器端,你希望在客户端进行部分更新。PHP不是那样工作的。
当您调用该php脚本时,php解释器开始执行它,将输出放入临时位置,然后使用sleep函数,php解释器等待,直到达到毫秒,然后继续执行,在临时位置连接输出,然后继续…所有脚本执行完后,php将整个输出发送到客户端。
如果您需要对页面进行部分更新,则需要进入异步调用和ajax的世界。
它缓冲输出,并且只在页面加载完成时发送,或者在缓冲了几KB之后发送。您可以通过将代码完全封装在ob_start()
和ob_end_flush()
中来控制此功能,或者在本例中,在每次睡眠前调用flush()
。
更多信息:什么是输出缓冲?
php是服务器端。你用javascript的setTimeout()
函数试过这个吗?
下面是一个字符串的例子,它在5秒延迟后重复了10次。
<script>
setTimeout(test, 5000);
function test(){
for (var i=0;i<10;i++){
document.write("test <br />");
}
}
</script>