W3docs

gettimeofday()

Aprenda a função PHP gettimeofday(): sintaxe, valores de retorno, o parâmetro as_float, remoção no PHP 8.0 e como substituí-la por microtime(true).

A Função PHP gettimeofday()

A função gettimeofday() retorna a hora atual do sistema. Por padrão, ela retorna um array associativo com os segundos e microssegundos desde a época Unix mais detalhes do fuso horário. Com seu argumento opcional definido como true, ela retorna o tempo como um único float.

Importante: gettimeofday() foi removida no PHP 8.0.0. Se você está escrevendo ou mantendo PHP moderno, use microtime(true) para timestamps de alta precisão. Este capítulo explica a função legada e mostra a substituição recomendada para que você possa migrar código antigo com segurança.

Esta página aborda a sintaxe, o parâmetro opcional, o valor de retorno exato, exemplos executáveis e o que usar em seu lugar.

Sintaxe

gettimeofday(bool $as_float = false): array|float

Parâmetros

ParâmetroTipoDescrição
$as_floatboolOpcional. Quando true, retorna um único float (segundos com microssegundos). Quando omitido ou false, retorna um array associativo. O padrão é false.

Valor de Retorno

Quando $as_float é false (o padrão), gettimeofday() retorna um array associativo com estas chaves:

  • sec — segundos desde a época Unix (int).
  • usec — microssegundos dentro do segundo atual (int).
  • minuteswest — minutos a oeste de Greenwich (int).
  • dsttime — tipo de correção de horário de verão (int).

Quando $as_float é true, ela retorna um único float: o número de segundos desde a época, com os microssegundos expressos como parte fracionária.

Exemplo: a forma de array padrão

<?php
$now = gettimeofday();
print_r($now);

Um resultado típico é semelhante a este (os números dependem do momento em que você o executa):

Array
(
    [sec] => 1718928000
    [usec] => 512340
    [minuteswest] => 0
    [dsttime] => 0
)

Exemplo: a forma float

Passar true retorna um único valor que você pode usar diretamente em operações aritméticas — útil para medir o tempo decorrido:

<?php
$float = gettimeofday(true);
echo $float; // e.g. 1718928000.51234

Substituição recomendada: microtime(true)

Como gettimeofday() não existe mais no PHP 8.0+, a forma portável de obter um timestamp de alta precisão é microtime(true), que retorna o mesmo tipo de float:

<?php
$start = microtime(true);

// ... code you want to time ...
for ($i = 0; $i < 1_000_000; $i++) {
    // busy work
}

$elapsed = microtime(true) - $start;
echo "Elapsed: " . round($elapsed, 6) . " seconds";

Se você precisar especificamente da divisão segundos/microssegundos que o array antigo fornecia, pode reconstruí-la a partir de microtime(true):

<?php
$t = microtime(true);
$sec = (int) $t;
$usec = (int) round(($t - $sec) * 1_000_000);

echo "sec={$sec}, usec={$usec}";

Quando eu usaria isso?

Você encontrará gettimeofday() principalmente ao ler ou atualizar código legado escrito para PHP 5 ou 7. Seus usos reais eram:

  • Temporização de alta precisão e profiling (quanto tempo leva um bloco de código ou uma consulta ao banco de dados).
  • Geração de timestamps com resolução de sub-segundo para logs.

Para todos esses casos, o código PHP moderno deve usar microtime(true). Para timestamps de segundos inteiros onde os microssegundos não importam, time() é mais simples, e getdate() retorna um array rotulado com partes da data. Para formatar qualquer um deles em uma string legível por humanos, consulte a função date().

Considerações de Desempenho

gettimeofday() é uma chamada de sistema, portanto tem uma pequena sobrecarga. Mais importante ainda, chamá-la no PHP 8.0+ gera um Error porque a função foi removida. microtime(true) é suportada em todas as versões atuais do PHP, é leve e retorna um float pronto para operações aritméticas — tornando-a a escolha correta para novo código.

Conclusão

gettimeofday() retornava a hora atual como um array associativo (sec, usec, minuteswest, dsttime) ou, com $as_float definido como true, como um único float. Ela foi removida no PHP 8.0.0, portanto, para timestamps de microssegundos precisos e profiling em PHP moderno, use microtime(true).

Prática

Prática
O que gettimeofday() retorna quando seu argumento opcional é omitido?
O que gettimeofday() retorna quando seu argumento opcional é omitido?
Was this page helpful?