CakeFest 2024: The Official CakePHP Conference

hrtime

(PHP 7 >= 7.3.0, PHP 8)

hrtimeПолучить системное время высокого разрешения

Описание

hrtime(bool $as_number = false): array|int|float|false

Возвращает время высокого разрешения системы, отсчитываемое с произвольной точки времени. Полученная временная метка неизменна и не может быть отрегулирована.

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

as_number

Должно ли время высокого разрешения возвращаться в виде массива (array) или числа.

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

Возвращает массив целых чисел в формате [секунды, наносекунды], если параметр as_number равен false. В противном случае наносекунды возвращаются в виде целого числа (int) (для 64-битных систем) или float (для 32-битных систем). Возвращает false в случае возникновения ошибки.

Примеры

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

<?php
echo hrtime(true), PHP_EOL;
print_r(hrtime());
?>

Вывод приведённого примера будет похож на:

10444739687370679
Array
(
    [0] => 10444739
    [1] => 687464812
)

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

add a note

User Contributed Notes 1 note

up
62
SenseiSimple
5 years ago
This function is particularly necessary on VMs running on KVM, XEN (openstack, AWS EC2, etc) when timing execution times.

On these platforms which lack vDSO the common method of using time() or microtime() can dramatically increase CPU/execution time due to the context switching from userland to kernel when running the `gettimeofday()` system call.

The common pattern is:
<?php
$time
= -microtime(true);
sleep(5);
$end = sprintf('%f', $time += microtime(true));
?>

Substituted as:
<?php
$start
=hrtime(true);
sleep(5);
$end=hrtime(true);
$eta=$end-$start;

echo
$eta/1e+6; //nanoseconds to milliseconds
//5000.362419

//OR simply

$eta=-hrtime(true);
sleep(5);
$eta+=hrtime(true);

echo
$eta/1e+6; //nanoseconds to milliseconds
//5000.088229
?>

There is also the new StopWatch class http://php.net/manual/en/class.hrtime-stopwatch.php
To Top