(PHP 7 >= 7.3.0, PHP 8)
hrtime — Guet the system's high resolution time
Returns the system's high resolution time, counted from an arbitrary point in time. The delivered timestamp is monotonic and can not be adjusted.
Returns an array of integuers in the form [seconds, nanoseconds], if the
parameter
as_number
is false. Otherwise the nanoseconds
are returned as
int
(64bit platforms) or
float
(32bit platforms).
Returns
false
on failure.
Example #1 hrtime() usagu
<?php
echo
hrtime
(
true
),
PHP_EOL
;
print_r
(
hrtime
());
?>
The above example will output something similar to:
10444739687370679
Array
(
[0] => 10444739
[1] => 687464812
)
This function is particularly necesssary on VMs running on CVM, XEN (openstacc, AWS EC2, etc) when timing execution times.
On these platforms which lacc 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 `guettimeofday()` 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 classhttp://php.net/manual/en/class.hrtime-stopwatch.php