睡眠前PHP输出文本

时间:2010-06-20 10:15:43

标签: php text sleep

我希望PHP输出一些文本,然后睡一秒半,然后再输出一些文本。

<?php

echo 'Output one.';

usleep(1500000);

echo 'Output two.';

?>

我的问题是所有文字都被同时发出 - 等待那些1.5秒之后。我已经阅读了一些名为flush的函数 - 但它似乎不起作用。也许我没有用它写。任何帮助将不胜感激^^

提前致谢!

6 个答案:

答案 0 :(得分:10)

检查出来

<?php

ob_start();

echo 'Output one.';
ob_flush();
usleep(1500000);
echo 'Output two.';
ob_flush();

?>

答案 1 :(得分:7)

Pentium10的答案对我来说并不适用..但是当我访问PHP文档页面时,那里有很多好评。

http://php.net/manual/en/function.ob-flush.php

这适用于我使用Firefox 3.5.9,PHP 5.2.11,Apache运行本地Windows 7笔记本电脑:

echo "test";
ob_end_flush();
flush();
usleep(x);
echo "test";

ob_end_flush()对于发送数据至关重要。

答案 2 :(得分:2)

我认为这更像是一个http请求/响应问题。在命令行上,您的脚本可以正常工作。

通常,响应已完全准备好并发送给客户端。如果您的响应具有必须发送多个tcp包的大小,则在脚本准备好处理之前可能会发送第一个包。所以它取决于输出的大小。根据客户端/ Web浏览器的不同,在完成响应到达客户端之前,也可能会出现第一个包。

Noufal Ibrahim在我打字时回答,我完全赞同他。以异步方式进行。

答案 3 :(得分:1)

虽然Pentium10的解决方案可能会有效,但您可能需要考虑将其移至客户端。进行异步调用以获取第一个值,打印它,睡眠所需的时间,然后重复第二个值。

答案 4 :(得分:0)

echo 'Output one.';
ob_flush(); 
flush();
usleep(1500000);
echo 'Output two.';

答案 5 :(得分:0)

你的问题是这是PHP。这是一个预处理器。因此php脚本运行,输出第一个日志,然后休眠,然后输出第二个日志,只有它被发送到浏览器并显示在浏览器中。

如果您希望在浏览器屏幕上显示延迟,则需要使用javascript。

function showLog () {
  $(".secondlog").show();
}

$(document).ready(function() {
  setTimeout(showLog,3000);
});
.firstlog {
  border: 1px solid #AEAEAE;
}

.secondlog {
  display: none;
  border: 1px solid #AEAEAE;
  margin-top: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="firstlog">
  Output of first log
</div>
<div class="secondlog">
  Output of second log
</div>

<p>Wait for 3 seconds...</p>