W3docs

gettimeofday()

Découvrez la fonction PHP gettimeofday() : syntaxe, valeurs de retour, paramètre as_float, suppression en PHP 8.0 et remplacement par microtime(true).

La fonction PHP gettimeofday()

La fonction gettimeofday() renvoie l'heure système actuelle. Par défaut, elle retourne un tableau associatif contenant les secondes et les microsecondes depuis l'époque Unix ainsi que les informations sur le fuseau horaire. Lorsque son argument optionnel est défini à true, elle renvoie l'heure sous la forme d'un float unique à la place.

Important : gettimeofday() a été supprimée dans PHP 8.0.0. Si vous écrivez ou maintenez du PHP moderne, utilisez microtime(true) pour des horodatages de haute précision. Ce chapitre explique la fonction héritée et présente le remplacement recommandé afin de vous aider à migrer du code plus ancien en toute confiance.

Cette page couvre la syntaxe, le paramètre optionnel, la valeur de retour exacte, des exemples exécutables, et ce qu'il faut utiliser à la place.

Syntaxe

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

Paramètres

ParamètreTypeDescription
$as_floatboolOptionnel. Lorsque true, renvoie un float unique (secondes avec microsecondes). Lorsqu'omis ou false, renvoie un tableau associatif. Par défaut à false.

Valeur de retour

Lorsque $as_float est false (valeur par défaut), gettimeofday() retourne un tableau associatif avec les clés suivantes :

  • sec — secondes depuis l'époque Unix (int).
  • usec — microsecondes dans la seconde courante (int).
  • minuteswest — minutes à l'ouest de Greenwich (int).
  • dsttime — type de correction de l'heure d'été (int).

Lorsque $as_float est true, elle renvoie un float unique : le nombre de secondes depuis l'époque, avec les microsecondes exprimées comme partie fractionnaire.

Exemple : la forme tableau par défaut

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

Un résultat typique ressemble à ceci (les nombres dépendent du moment où vous l'exécutez) :

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

Exemple : la forme float

Passer true renvoie une valeur unique utilisable directement dans les calculs — pratique pour mesurer le temps écoulé :

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

Remplacement recommandé : microtime(true)

Étant donné que gettimeofday() n'existe plus dans PHP 8.0+, la façon portable d'obtenir un horodatage de haute précision est microtime(true), qui retourne le même type 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";

Si vous avez spécifiquement besoin de la séparation secondes/microsecondes que fournissait l'ancien tableau, vous pouvez la reconstruire à partir de microtime(true) :

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

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

Quand utiliser cette fonction ?

Vous rencontrerez principalement gettimeofday() en lisant ou en mettant à jour du code hérité écrit pour PHP 5 ou 7. Ses usages réels étaient :

  • Le chronométrage de haute précision et le profilage (durée d'exécution d'un bloc de code ou d'une requête base de données).
  • La génération d'horodatages avec une résolution inférieure à la seconde pour les journaux.

Pour tous ces cas, le code PHP moderne doit utiliser microtime(true). Pour les horodatages à la seconde entière où les microsecondes n'ont pas d'importance, time() est plus simple, et getdate() retourne un tableau étiqueté des composantes de date. Pour formater l'un de ces résultats en chaîne lisible par un humain, consultez la fonction date().

Considérations de performance

gettimeofday() est un appel système, ce qui implique une légère surcharge. Plus important encore, l'appeler dans PHP 8.0+ déclenche une Error car la fonction a été supprimée. microtime(true) est supportée par toutes les versions actuelles de PHP, est légère et renvoie un float prêt pour les calculs arithmétiques — ce qui en fait le choix correct pour le nouveau code.

Conclusion

gettimeofday() renvoyait l'heure actuelle soit sous forme de tableau associatif (sec, usec, minuteswest, dsttime), soit, avec $as_float défini à true, sous forme de float unique. Elle a été supprimée dans PHP 8.0.0, donc pour des horodatages en microsecondes précis et le profilage en PHP moderne, utilisez microtime(true) à la place.

Exercice

Pratique
Que retourne gettimeofday() lorsque son argument optionnel est omis ?
Que retourne gettimeofday() lorsque son argument optionnel est omis ?
Was this page helpful?