time_sleep_until延迟php代码执行直到指定时间

网络整理 - 08-11

定义和用法
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;
    }
}
?>