1

我正在尝试在 echo 命令之间插入延迟,并想使用sleep()函数。不幸的是,据我了解,PHP 中的 sleep() 函数会延迟整个脚本。我想知道这是否有一个技巧?

我正在尝试完成以下任务

  1. 回显一行
  2. 睡觉(2)
  3. 回显下一行
  4. 睡觉(2)

有没有办法在没有任何 JS 或其他东西的情况下用 PHP 做到这一点?

4

2 回答 2

2

我假设当您说您不想延迟整个脚本时,您实际上是在谈论输出......您不想延迟整个输出,只是睡眠后的东西。

有几件事要记住:

  1. IE 在收到 1k 内容之前往往不会显示任何内容。为了解决这个问题,您需要通过输出一些填充来启动您的脚本......例如,1024 个空格。(这对实际的 HTML 显示没有影响)

  2. 您需要确保您的内容没有被 Web 服务器以任何方式压缩

  3. 您需要在回显后刷新输出缓冲区。

所有这些加起来看起来像这样:

<?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 />");
?>
于 2013-06-07T00:07:54.993 回答
2

我认为您需要的只是一些javascript:

<p id="p"></p>

<script>

setTimeout(function() {
  document.getElementById('p').innerHTML = "line1";
}, 2000);

setTimeout(function() {
  document.getElementById('p').innerHTML = "line2";
}, 4000);

</script>
于 2013-06-07T00:03:39.447 回答