我正在尝试在 echo 命令之间插入延迟,并想使用sleep()函数。不幸的是,据我了解,PHP 中的 sleep() 函数会延迟整个脚本。我想知道这是否有一个技巧?
我正在尝试完成以下任务
- 回显一行
- 睡觉(2)
- 回显下一行
- 睡觉(2)
有没有办法在没有任何 JS 或其他东西的情况下用 PHP 做到这一点?
我假设当您说您不想延迟整个脚本时,您实际上是在谈论输出......您不想延迟整个输出,只是睡眠后的东西。
有几件事要记住:
IE 在收到 1k 内容之前往往不会显示任何内容。为了解决这个问题,您需要通过输出一些填充来启动您的脚本......例如,1024 个空格。(这对实际的 HTML 显示没有影响)
您需要确保您的内容没有被 Web 服务器以任何方式压缩
您需要在回显后刷新输出缓冲区。
所有这些加起来看起来像这样:
<?php
// turn off output compression
@apache_setenv('no-gzip', 1);
ini_set('zlib.output_compression', 0);
// no need to flush after every output call
ob_implicit_flush(true);
// some padding for IE
echo(str_repeat(" ", 1024) . "\n");
echo("Something here<br />");
sleep(5);
echo("Something else<br />");
?>
我认为您需要的只是一些javascript:
<p id="p"></p>
<script>
setTimeout(function() {
document.getElementById('p').innerHTML = "line1";
}, 2000);
setTimeout(function() {
document.getElementById('p').innerHTML = "line2";
}, 4000);
</script>