time_sleep_until
使脚本睡眠到指定的时间为止
PHP 5 >= 5.0.0, PHP 7, PHP 8
time_sleep_until() 函数使当前脚本暂停执行,直到指定的时间点到达。该时间点是以Unix时间戳(自1970年1月1日以来的秒数)表示的。
与 sleep() 或 usleep() 不同,time_sleep_until() 不仅可以暂停一段时间,还能精准地暂停到某个绝对时间点,适合需要精确定时的场景。
bool time_sleep_until(float $timestamp)
成功时返回 TRUE,失败时返回 FALSE。失败通常发生在参数无效或目标时间已过去的情况下。
以下示例使脚本暂停,直到当前时间的下一秒开始时再继续执行:
$now = microtime(true); $next = ceil($now); // 获取下一个整数秒时间点 echo "Sleeping until " . date('H:i:s', $next) . "\n"; time_sleep_until($next); echo "Woke up at " . date('H:i:s') . "\n";
代码首先通过 microtime(true) 获取当前的高精度时间戳(秒,小数点后带微秒)。然后通过 ceil() 计算出下一个整秒时间点。
调用 time_sleep_until() 并传入该时间点后,脚本将挂起直到该时间到达。最后,打印唤醒时的时间,可以看到与目标时间相匹配。