CakeFest 2024: The Official CakePHP Conference

hrtime

(PHP 7 >= 7.3.0, PHP 8)

hrtimeObtém o tempo de alta resolução do sistema

Descrição

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

Retorna o tempo em alta resolução do sistema, contado a partir de um ponto arbitrário no tempo. O timestamp fornecido é monotônico e não pode ser ajustado.

Parâmetros

as_number

Define se o tempo em alta resolução deve ser retornado como array ou como número.

Valor Retornado

Retorna um array de inteiros na forma [segundos, nanossegundos], se o parâmetro as_number for falso. Caso contrário, os nanossegundos são retornados como int (plataformas 64 bits) ou float (plataformas 32 bits). Retorna false em caso de falha.

Exemplos

Exemplo #1 Uso de hrtime()

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

O exemplo acima produzirá algo semelhante a:

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

Veja Também

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