PHP 8.4.0 RC4 available for testing

hrtime

(PHP 7 >= 7.3.0, PHP 8)

hrtimeGet the system's high resolution time

Beschreibung

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

Returns the system's high resolution time, counted from an arbitrary point in time. The delivered timestamp is monotonic and can not be adjusted.

Parameter-Liste

as_number

Whether the high resolution time should be returned as array or number.

Rückgabewerte

Returns an array of integers 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.

Beispiele

Beispiel #1 hrtime() usage

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

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

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

Siehe auch

add a note

User Contributed Notes 1 note

up
63
SenseiSimple
6 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