PHP.mk документација

time_sleep_until

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.time-sleep-until.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.time-sleep-until.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
time_sleep_until

Референца за `function.time-sleep-until.php` со подобрена типографија и навигација.

function.time-sleep-until.php

time_sleep_until

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

time_sleep_until Натерајте го скриптот да спие до одреденото време

= NULL

time_sleep_until(float $timestamp): bool

Го тера скриптот да спие до одреденото timestamp.

Параметри

timestamp

Временскиот печат кога скриптот треба да се разбуди.

Вратени вредности

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

Errors/Exceptions

Ако наведеното timestamp е во минатото, оваа функција ќе генерира E_WARNING.

Примери

ако е овозможен колекторот за отпадоци, time_sleep_until() example

<?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(microtime(true)+0.2));

?>

Белешки

Забелешка: Сите сигнали ќе бидат испорачани откако скриптот ќе се разбуди.

Види Исто така

  • sleep() - Одложи извршување
  • usleep() - Задржи извршување во микросекунди
  • time_nanosleep() - Задржи за број на секунди и наносекунди
  • set_time_limit() - Направете скриптата да спие до одредено време

Белешки од корисници 3 белешки

(PHP 5 >= 5.1.0, PHP 7, PHP 8)
пред 14 години
At least on my Windows machine, the time_sleep_until function appears to calculate the number of microseconds between now and the sleep-until timestamp, and it appears to use unsigned 32-bit math in this calculation.  This roundoff leads to a maximum sleep time of just under 4295 seconds (1 hour, 11 minutes, 35 seconds).  To get longer sleep times, while still using time_sleep_until to minimize processor overhead, the following loop may be some help to you:

<?php

$sleepuntil = strtotime("tuesday 3pm");

while (time() < $sleepuntil)
   time_sleep_until($sleepuntil);

// proceed with dated processing

?>

Of course, one could use something like "cron" instead, to avoid the script doing the extended sleep.  Also note that time_nanosleep appears to do similar math, but it is somewhat more intuitive that the seconds parameter has an upper limit on what it can be.  Still, both functions might report a warning when waking up prematurely due to roundoff.
arglanir+phpnet at gmail dot com
пред 13 години
Not realising that this function existed, I wrote something similar, but it has the additional facility to specify a minimum pause even if the target time has already been reached, for instance in a processor-intensive loop.

It's in seconds rather than microseconds (it's intended for heavy-duty CLI scripts), but that could easily be changed by using microtime(true) and usleep if greater granularity was required.

<?php
    /**
     * Pause processing until the specified time, to avoid hammering a DB or service
     *
     * @param int $target_time Timestamp
     * @param int $min_sleep Always sleep for a minimum number of seconds,
     *    even if the target timestamp has already passed.
     *     Default 0, meaning only sleep until the target timestamp is reached.
     *
     * @example <code>
         while ( ! $finished )
         {
             $minimum_start_of_next_loop = time() + $min_secs_per_loop;
             
             # DO STUFF THAT MAY OR MAY NOT TAKE VERY LONG
             
             sleep_until( $minimum_start_of_next_loop, $min_pause_between_loops );
         }
     </code>
     */
    function sleep_until($target_time, $min_sleep = 0)
    {
        $time_now = time();
        
        $time_to_target = $target_time - $time_now;
        
        // If we've already reached the target time, that's fine
        if ( $time_to_target <= $min_sleep )
        {
            // If required, sleep for a bit anyway
            sleep( $min_sleep );
        }
        else
        {
            // Sleep for the number of seconds until the target time
            sleep( $time_to_target );
        }
    }
?>
[email protected]
пред 6 години
if you for some reason need a constant-time implementation of realpath(), try

<?php

function realpath_constant_time(string $path, float $target_seconds, bool &$constant_time_success = null){
    $start_time=microtime(true);
    $ret=realpath($path);
    $constant_time_success = @time_sleep_until($start_time+$target_seconds);
    return $ret;
}
?>

for example, a realtime that always uses exactly 1 millisecond (should be more than enough for SSD-based servers, perhaps rotating harddrive based servers may need something closer to 10 milliseconds, i don't know):

<?php
realpath_constant_time("/path/to/../to/file.txt",0.001,$constant_time_success);
?>

and you can use $constant_time_success to see if you needed more time (and thus failed to do realpath() in constant-time), or if you succeeded.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.