【发布时间】:2016-03-21 08:47:34
【问题描述】:
请原谅这个看似非常简单的问题,并且可能对 PHP/sleep() 的工作原理缺乏了解,但我对以下代码进行了一些指导:
<?php
$time_now = time();
echo "Time Now : " . $time_now;
sleep(10);
$time_then = time();
echo "<br>Time Then : " . $time_then;
?>
我希望这段代码输出当前时间,然后等待 10 秒,然后在 10 秒后输出时间。
而是等待设置的 10 秒并同时输出两个时间。时间是正确的,因为“现在时间”是我执行代码的时间,而“时间然后”是 10 秒后,但它没有按照我的预期响应(现在输出时间,等待 10 秒,然后继续执行代码并显示“Time Then”)。
鉴于我的理解显然不正确,是否有可能实现这一点?或者我会更好地触发另一个文件来加载我想要做的事情,如下所示:
文件 1
<?php
$time_now = time();
echo "Time Now : " . $time_now;
header('Location: page2.php');
?>
文件 2
<?php
sleep(10);
$time_then = time();
echo "<br>Time Then : " . $time_then;
?>
谢谢。
【问题讨论】:
-
sleep()命令用于告诉服务器在执行脚本之前等待。似乎将函数放在开头、中间或结尾都没有关系,反正它会休眠。 -
@C0dekid 谢谢,我明白了,但我希望在 sleep 命令之前执行并回显代码,然后等待并回显第二个值
-
输出通常是缓冲的。如果您想在调用
echo时立即得到响应,您需要刷新输出。 -
它确实按照您期望的方式工作:只需在命令行中尝试!您可能没有提到的是您正在通过 Web 服务器和 Web 浏览器组合加载代码。
-
看看这个例子:php.net/manual/en/function.flush.php我想这就是你需要的。 PHP 需要一次性执行。所以基本上睡眠前的消息不会显示,因为 sleep() 函数正在等待执行脚本的其余部分。