begin process at 2012 02 05 02:45:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > TEMPS DE GÉNÉRATION D'UNE PAGE PHP

TEMPS DE GÉNÉRATION D'UNE PAGE PHP


 Information sur la source

Note :
8,83 / 10 - par 12 personnes
8,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Niveau :Débutant Date de création :28/04/2002 Date de mise à jour :28/04/2002 15:01:28 Vu :13 024

Auteur : Marneus Calgar

Ecrire un message privé
Site perso
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

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

  • // 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);
// 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...


 Sources du même auteur

Source avec Zip Source avec une capture SOULIGNEUR SYNTAXIQUE DE CODE (DELPHI, VB, C/C++ ETC)
[TABLEAUX] ELIMINER DES ÉLÉMENTS D'UN TABLEAU

 Sources de la même categorie

Source avec Zip Source avec une capture GENERATEUR D'ONGLET DE NAVIGATION PHP par pos123
FORMATER UN LIEN YOUTUBE, DAILYMOTION OU VIMEO POUR L'UTILIS... par kgb93
Source avec Zip Source avec une capture PAGINATION + FICHIER CSS par profdi
Source avec Zip Source avec une capture SYSTEME D'AUTHENTIFICATION PHP AVEC PROTÉCTION KEYLOGGER par mtrix000
Source avec Zip Source avec une capture GENERATEUR DE BOUTONS DE PARTAGES POUR RESEAUX SOCIAUX par cod57

Commentaires et avis

Commentaire de keyser le 10/02/2003 14:49:38

sa ne fonctionne pas !!!!!

Commentaire de Marneus Calgar le 10/02/2003 17:00:24

Pourtant chez moi sous Apache et sur mon serveur chez Amen ca fonctionne bien

Commentaire de keyser le 25/02/2003 18:54:01

c bon sa marche mais par contre les pages se génère en 0.000 seconde !!! peu être à cause de l'adsl ???

Commentaire de Marneus Calgar le 25/02/2003 20:01:29

ca ne dépend pas de ta vitesse de connection, ca dépend tout simplement du temps que met le serveur PHP pour analyser le code et générer la page, comme le titre du script l'indique...

Commentaire de romalafrite le 20/04/2004 01:11:25

parfait 10/10

Commentaire de romalafrite le 20/04/2004 01:11:51

voilà qui force le respect par la simplciité de mise en oeuvre et de pensée...

Commentaire de romalafrite le 20/04/2004 01:14:30

Euh, pour les boulets qui auraient pas lu le code avant de le mettre en oeuvre, c'est bien un code en deux parties, une que l'on met en haut de la page, une en bas de la page...

Ceci permet de comparer la date de début et la date de fin et de faire une soustraction (oui je répète, mais apparemment, tout le monde n'arrive pas à lire en haut de la page...)

Commentaire de Marneus Calgar le 20/04/2004 08:06:43

Merci :-)

Commentaire de Dave73 le 07/05/2005 09:33:57

Magnifique script, facile à installer, 10/10. Bravo et Merci.

Commentaire de aiwaxx le 01/12/2005 11:21:11

Parfait pour moi, rien à ajouter...

Commentaire de Rimb0 le 20/01/2006 17:35:58

Salut !
J'ai testé et ça marche super. Seulement, je trouve qu'un détail pourrait etre amélioré...

Il arrive que sur ma page, il y ait des dizaines de chiffres apres la virgule !
Ex : 0.0098452339999999999

J'trouve ça dommage, il serait peut etre mieux de laisser 4 chiffres max apres la virgule.

Merci.

Commentaire de Marneus Calgar le 22/01/2006 23:46:52

Normalement, si tu as bien utilisé

printf("%2.3f secondes", $time);

comme dans le code original, seuls 3 chiffres seront affichés après la virgule...
(à moins de modification du printf dans une version de php dont je ne serais pas au courant)

Commentaire de caviar le 10/11/2006 17:28:15

impecable ! très sympas comme idée !
merci
@+

Commentaire de Astemius le 20/05/2007 02:36:29

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...

Commentaire de max35 le 25/04/2008 16:35:50

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.

Commentaire de max35 le 25/04/2008 16:55:16 10/10

J'ai oublié de noter :)

Commentaire de Laffrey le 04/05/2008 08:54:52

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 '<p class="text">Page exécutée en '.round(($fin - $debut),5).' secondes.</p>';
?>

Commentaire de calfou le 19/01/2009 23:35:27 5/10

Merci pour la source et aussi merci à Laffrey qui à une solution qui marche bien et est plus simple à mettre en place :)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales