请原谅看似非常简单的问题,可能缺乏对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秒设置并同时输出两个时间。时间是正确的,因为'Time Now'是我执行代码时,'Time Then'是10秒后,但它没有响应我的预期(输出Time Now,等待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;
?>
谢谢。
答案 0 :(得分:4)
您需要使用PHP的flush功能来获得例外结果。
PHP在脚本完成时为您提供输出。如果要实时显示结果,则需要刷新输出缓冲区。
$time_now = time();
echo "Time Now : " . $time_now;
flush();
sleep(10);
$time_then = time();
echo "<br>Time Then : " . $time_then;
答案 1 :(得分:1)
如果你在服务器上运行它,它确实会在脚本完成后给出输出。
但如果用作命令行脚本,它将输出然后休眠十秒钟然后继续
在@lolka_bolka中提到你是否想要值然后你可以使用flush