Question

J'ai remarqué que, quel que soit le temps d'exécution d'un script donné, chaque appel date () retournera le même horodatage, quel que soit l'endroit où la fonction est appelée dans le script. Il semble que cela renvoie simplement l'heure à laquelle le script a commencé à s'exécuter.

À des fins de journalisation, il serait extrêmement utile de pouvoir obtenir des horodatages incrémentiels à partir d'un script. Est-ce possible? Y a-t-il un moyen de le faire relativement léger?

Modifier: L'exemple de la fonction microtime () suggère-t-il ça pourrait faire ça. Quelqu'un peut-il confirmer?

Mettre à jour: microtime () fonctionne, mais je ne peux pas le formater avec la fonction date () car date () accepte uniquement les horodatages sous forme d'entiers (donc pas de microsecondes). Comment obtenir une date correctement formatée à partir de la valeur renvoyée par microtime ()?

Était-ce utile?

La solution

http://us.php.net/microtime me donne différents moments dans le même script .

Autres conseils

Tout d'abord, date () est utilisé pour formater un horodatage - il s'agit simplement du comportement par défaut selon lequel il utilisera l'horodatage actuel, lorsque date () est appelé sans second paramètre. L'horodatage utilisé sera l'horodatage du moment où la fonction est appelée - l'appel de date ('Ym-d') est identique à l'appel de date ('Ym-d', time ()). time () vous donnera le

  

[...] l'heure actuelle mesurée dans le   nombre de secondes depuis l'époque Unix   (1er janvier 1970 00:00:00 GMT).

Vous n’avez que le même horodatage chaque fois que vous appelez date () car votre script est trop rapide et s’exécute en moins d’une seconde, ce qui n’entraîne aucun changement d’horodatage.

Pour résoudre votre deuxième problème de formatage du microtime () valeur de retour, vous pouvez effectuer les opérations suivantes (non testées)

function formatTime($microtime, $format)
{
    list($timestamp, $fraction) = explode('.', $microtime);
    return date($format, (int)$timestamp) . '.' . $fraction;
}

La valeur donnée à $ microtime doit être un float , que vous obtenez lorsque vous transmettez true en tant que paramètre à microtime. ()

J'ai exécuté ce code sur ma machine:

<?php
$time_start = time();

sleep(2);

$time_end = time();

print 'Start: ' . date("m/d/Y @ g:i:sA", $time_start) . '<br>';
print 'End: ' . date("m/d/Y @ g:i:sA", $time_end);
?>

Et la sortie:

Start: 10/23/2008 @ 3:12:23PM
End: 10/23/2008 @ 3:12:25PM

Ce qui me laisse croire que time () ne renvoie pas simplement l'heure à laquelle l'exécution a commencé.

Vous pouvez utiliser le package d'analyse comparative de Pear pour obtenir des informations de chronométrage et de profilage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top