time_nanosleep

(PHP 5, PHP 7)

time_nanosleepОткладывает исполнение на заданное число секунд и наносекунд

Описание

mixed time_nanosleep ( int $seconds , int $nanoseconds )

Откладывает исполнение программы на заданные в параметрах seconds и nanoseconds число секунд и наносекунд соответственно.

Список параметров

seconds

Должно быть целым положительным числом.

nanoseconds

Должно быть целым положительным числом, меньшим одного миллиарда.

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Если отложенное исполнение было прервано сигналом, то возвращается ассоциативный массив со следующими компонентами:

  • seconds - число оставшихся секунд
  • nanoseconds - число оставшихся наносекунд

Список изменений

Версия Описание
5.3.0 Эта функция теперь доступна на платформах Windows.

Примеры

Пример #1 Пример использования time_nanosleep()

<?php
// Внимание! Если будет возвращен массив, то такая функция не сработает как ожидалось
if (time_nanosleep(0500000000)) {
    echo 
"Задержка на пол-секунды.\n";
}

// Так лучше:
if (time_nanosleep(0500000000) === true) {
    echo 
"Задержка на пол-секунды.\n";
}

// И так лучше всего:
$nano time_nanosleep(2100000);

if (
$nano === true) {
    echo 
"Задержка на 2 секунды, 100 микросекунд.\n";
} elseif (
$nano === false) {
    echo 
"Задержка не удалась.\n";
} elseif (
is_array($nano)) {
    
$seconds $nano['seconds'];
    
$nanoseconds $nano['nanoseconds'];
    echo 
"Прервано сигналом.\n";
    echo 
"Осталось: $seconds секунд, $nanoseconds наносекунд.";
}
?>

Смотрите также

  • sleep() - Откладывает выполнение
  • usleep() - Откладывает выполнение на микросекунды
  • time_sleep_until() - Откладывает исполнение скрипта до заданного времени
  • set_time_limit() - Ограничение времени выполнения скрипта

Коментарии

Автор:
You should take into account, if you use the function replacement down here, the CPU will be in use of 99% for the time of execution...

(A little bit better in this situation is to let the 'full seconds' go by a normal sleep command (makes the thread sleep!, and uses minimum cpu))

<?php
   
//THIS IS THE FUNCTION WE ARE TALKIN ABOUT
   
function timeWait($microtime)
    {
//optimizations added by me [start]
//sleep the full seconds
sleep(intval($microtime));
//set the microtime to only resleep the last part of the nanos
$microtime $microtime intval($microtime);
//optimizations added by me [end]

       
$timeLimit $microtime array_sum(explode(" ",microtime()));
        while(
array_sum(explode(" ",microtime())) < $timeLimit)
        {
/*DO NOTHING*/}
        return(
true);
    }
 
   
//THIS IS HOW WE CAN USE IT
   
echo "Process started at " date("H:i:s") . " and " current(explode(" ",microtime())) . " nanoseconds.<br>";
   
timeWait(5.5); //With this call the system will wait 5 seconds and a half. You can use either integer or float.
   
echo "Process completed at " date("H:i:s") . " and " current(explode(" ",microtime())) . " nanoseconds.";
 
?>
2005-08-13 17:03:19
http://php5.kiev.ua/manual/ru/function.time-nanosleep.html
Documentation states that "seconds" must be positive. This is not correct, 0 is possible.

Rather, "seconds" must be non-negative.
2006-08-21 19:03:50
http://php5.kiev.ua/manual/ru/function.time-nanosleep.html
Just glancing at this - and the note from over a year ago with a implementation for windows.. with 5.0.0 and higher it would be simplier to just do something like......

<?php

if (!function_exists('time_nanosleep')) {

function 
time_nanosleep($seconds$nanoseconds) {

sleep($seconds);
usleep(round($nanoseconds/100));

return 
true;

}

}

?>

....off the top of my head - obviously simple enough there should be no mistakes.. but those are the ones that always seem to get ya :( .....
2006-12-18 17:27:02
http://php5.kiev.ua/manual/ru/function.time-nanosleep.html
A response to the note below:

Your function is also useless, as the WinNT 32 kernel only functions at a minimum of about 10+ ms (1,000 us), rendering usleep() useless, because usleep uses the C function which is provided by the system (in this case, kernel32.dll).

You'll want to use a function that does not rely on the kernel, but rather something made for precise measurement:

<?php
function usleep_win$micro_seconds )
{
    if ( @
function_exists"socket_create" ) && @function_exists"socket_select" ) )
    {
       
$false NULL;
       
$socket = array( socket_createAF_INETSOCK_RAW$false ) );
       
socket_select$false$false$socket0$micro_seconds );
        return 
true;
    }
    else
    {
        return 
false;
    }
}
?>

This function will allow to you sleep for a specified microsecond, although I have measured it to be off by ~5 us.

Again, most of this depends on the hardware in your system. If you _REALLY_ need to be precise to < 10 us, you shouldn't be using WinNT anyways!
2008-07-05 00:10:05
http://php5.kiev.ua/manual/ru/function.time-nanosleep.html

    Поддержать сайт на родительском проекте КГБ