time_sleep_until延迟php代码执行直到指定时间
定义和用法
time_sleep_until() 函数延迟代码执行直到指定的时间。
语法
time_sleep_until(timestamp)
参数 描述
timestamp 必需。脚本唤醒时的时间戳。
说明
使脚本暂停执行,直到指定的 timestamp。
返回值
如果成功则返回 TRUE,失败则返回 FALSE。
错误/异常
如果指定的时间戳位于过去,则该函数将生成一个 E_WARNING。
提示和注释
注释:所有信号都将在脚本唤醒后递送。
注释:本函数未在 Windows 平台下实现。
time_sleep_until
(PHP 5 >= 5.1.0)
time_sleep_until — Make the script sleep until the specified time
设置脚本延迟执行的时间
<?php
if (!function_exists('time_sleep_until')) {
function time_sleep_until($future) {
if ($future < time()) {
trigger_error("Time in past", E_USER_WARNING);
return false;
}
sleep($future - time());
return true;
}
}
?>
<?php
//Implementation for < 5.1 or Windows users
if (!function_exists('time_sleep_until')) {
function time_sleep_until($future) {
if ($future < time()) {
trigger_error("Time in past", E_USER_WARNING);
return false;
}
usleep(($future - microtime(1))*1000000);
return true;
}
}
?>
<?php
//returns false and generates a warning
var_dump(time_sleep_until(time()-1));
// may only work on faster computers, will sleep up to 0.2 seconds
var_dump(time_sleep_until(time()+0.2));
?>
<?php
// +----------------------------------------------------------------------+
// | PHP Version 4 |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2004 The PHP Group |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license, |
// | that is bundled with this package in the file LICENSE, and is |
// | available at through the world-wide-web at |
// | |
// | If you did not receive a copy of the PHP license and are unable to |
// | obtain it through the world-wide-web, please send a note to |
// | license@php.net so we can mail you a copy immediately. |
// +----------------------------------------------------------------------+
// | Authors: Arpad Ray <arpad@php.net> |
// +----------------------------------------------------------------------+
//
// $Id: time_sleep_until.php,v 1.2 2005/12/07 21:08:57 aidan Exp $
/**
* Replace time_sleep_until()
*
* @category PHP
* @package PHP_Compat
* @link
* @author Arpad Ray <arpad@php.net>
* @version $Revision: 1.2 $
* @since PHP 5.1.0
* @require PHP 4.0.1 (trigger_error)
*/
if (!function_exists('time_sleep_until')) {
function time_sleep_until($timestamp)
{
list($usec, $sec) = explode(' ', microtime());
$now = $sec + $usec;
if ($timestamp <= $now) {
user_error('Specified timestamp is in the past', E_USER_WARNING);
return false;
}
$diff = $timestamp - $now;
usleep($diff * 1000000);
return true;
}
}
?>