Temps de génération d'une page php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 138 fois - Téléchargée 29 fois

Contenu du snippet

Cet exemple permet d'afficher le temps que le serveur PHP a mis pour générer la page, très pratique pour évaluer les performances lors des requêtes SQL... Il faut faire une prise de temps au début de la génération de la page à l'aide de la fonction microtime ainsi qu'à la fin de la génération de la page, faire la différence à l'aide de la fonction ci-dessous, puis afficher le tout

Source / Exemple :


// Fonction qui calcule la différence entre 2 temps précis au millième de seconde
function DiffTime($microtime1, $microtime2)
{
   // on sépare les secondes et les millisecondes
   list($micro1, $time1) = explode(' ', $microtime1);
   list($micro2, $time2) = explode(' ', $microtime2);
   // on calule le nombre de secondes qui séparent les 2
   $time = $time2 - $time1;
   // on calcule les fractions de secondes qui séparent les 2
   if ($micro1 > $micro2)
   {
      // si le nombre de millisecondes du 2° temps est supérieur au 1°, on a compté une seconde de trop
      $time--;
      $micro = 1 + $micro2 - $micro1;	 
   }
   else
   {
      // sinon, on fait juste la différence
      $micro = $micro2 - $micro1;
   }
   // A la fin, on ajoute les secondes et les millisecondes
   $micro += $time;
   // Et on renvoie le tout
   return $micro;
}

// Prise de temps au début de la page PHP
$mt1 = microTime();

// code de la page...

// Prise de temps à la fin de la page PHP
$mt2 = microTime();

// Calcul et affichage du temps pris pour la génération
$time = DiffTime($mt1, $mt2);
printf("<p>Page générée en %2.3f secondes</p>\n", $time);

Conclusion :


Le fonctionnement est en fait simple, la fonction microTime() renvoie une chaine représentant respectivement le temps précis à la seconde et au millième de seconde, je sépare donc les 2 composants de cette chaine, puis je fais la différence...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
24
Date d'inscription
dimanche 16 février 2003
Statut
Membre
Dernière intervention
18 mars 2010

Merci pour la source et aussi merci à Laffrey qui à une solution qui marche bien et est plus simple à mettre en place :)
Messages postés
5
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
19 octobre 2007

Bonjour à tous,

Sur mon site, j'utilise un code beaucoup plus simple et moins long !!! (php 5) :

<?php
$debut = microtime(true);
//votre page
$fin = microtime(true);
echo 'Page exécutée en '.round(($fin - $debut),5).' secondes.

';
?>
Messages postés
15
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
13 juin 2009

J'ai oublié de noter :)
Messages postés
15
Date d'inscription
lundi 13 mars 2006
Statut
Membre
Dernière intervention
13 juin 2009

Merci, très simple et facilement modifiable (En même temps le code n'est pas compliqué !)
Tout comme l'auteur du dessus j'aime pas trop l'utilisation de :
printf("%2.3f secondes", $time);
Donc j'ai remplacé dans la fonction :
return $time;
Par :
return round($time, 3);

Voilà si il y a d'autre intéressés !

M@x.
Messages postés
10
Date d'inscription
mercredi 24 mai 2006
Statut
Membre
Dernière intervention
22 mars 2010

Salutations,
le post date un peu maintenant m'enfin. Outre le fait que le code soit joli la fonction peut être optimisée. J'ai eu du mal à comprendre le code au départ à cause de l'utilisation du If. Voici donc ma solution sans If (l'addition secondes, microsecondes se fait avant) :

// Fonction qui calcule la différence entre 2 temps précis au millième de seconde
function DiffTime($microtime1, $microtime2)
{
// on sépare les secondes et les millisecondes
list($micro1, $sec1) = explode(' ', $microtime1);
list($micro2, $sec2) = explode(' ', $microtime2);

// Pour chaque temps on additionne les secondes et les micro
$time1 = $sec1 + $micro1;
$time2 = $sec2 + $micro2;

// On calcule le temps d'execution de la page, en precisant
// le nomre de chiffres après la virgule
$time = round($time2 - $time1, 4);
// Et on renvoie le tout
return $time;
}

Le reste se fait de la même manière si ce n'est pour l'affichage :

echo 'Page générée en '.DiffTime($mt1,$mt2).' secondes';

le printf devient inutile étant donné que les chiffres après la virgule sont gérés dans la fonction.

Voila,
see you space cowboy...
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.