Publié le 26/10/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
2 commentaires

Mesurer le temps d'execution du script PHP

Une technique simple pour analyser son site web est de chronométrer le temps d'exécution. Dans le script PHP, un timestamp est relevé sur des points clés.
Concrètement, le but est de relever plusieurs fois l'heure précise à la milliseconde puis par soustraction, calculer le temps d'exécution de chacune des parties du script.
Depuis PHP5, la fonction microtime() retourne un timestamp complet. Par exemple, à ce moment précis, microtime(true); retourne 1288098634.5498 soit 15:10:34;

Temps d'exécution d'un script PHP

<?php
/**
* Calculer le temps d'execution d'un script
*/
 
// relever le point de départ
$timestart=microtime(true);
 
/**
* Execution du code PHP:
* - requete SQL,
* - génération du code HTML, 
* - ...
*/
 
//Fin du code PHP
$timeend=microtime(true);
$time=$timeend-$timestart;
 
//Afficher le temps d'éxecution
$page_load_time = number_format($time, 3);
echo "Debut du script: ".date("H:i:s", $timestart);
echo "<br>Fin du script: ".date("H:i:s", $timeend);
echo "<br>Script execute en " . $page_load_time . " sec";
?>
Exemple de résultat

Debut du script: 14:44:17
Fin du script: 14:44:18
Script execute en 0.736 sec

Mesurer le temps de chargement d'une page HTML

Pour estimer le temps de chargement d'une page HTML, un traceur est placé en début de script puis le temps de chargement est obtenu avec la différence du traceur final.
<?php
/**
* Mesurer le temps de chargement d'une page HTML
*/
 
// relever le point de départ
$timestart=microtime(true);
 
/**
* Charger la page index du site Fobec.com
*/
file_get_contents('http://www.fobec.com');
 
//Fin du code PHP
$timeend=microtime(true);
$time=$timeend-$timestart;
 
//Afficher le temps de chargement
$page_load_time = number_format($time, 3);
echo "Debut du chargement: ".date("H:i:s", $timestart);
echo "<br>Fin de reception: ".date("H:i:s", $timeend);
echo "<br>Page chargee en " . $page_load_time . " sec";
?>

Exemple de résultat

Debut du chargement: 14:50:54
Fin de reception: 14:50:55
Page chargee en 0.781 sec

Lorsque le projet est plus complexe et comporte des appels vers des scripts inclus, la fonction microtime() devra etre placée soit dans un seul script ou alors la valeur du temps initial est transmise au prochain script.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.
avatar Djrac

Publié par Djrac

le 16/07/2017 à 20:26:23

Bjr.
J'ai essaye ce code mais en cliquant sur f5 il me donne un autre temps d'execution malgre qu'il s'agit du meme page PHP. Je comprends pas ou il est le probleme.
Merci de me clarifier cette situation.

avatar Fobec

Publié par Fobec

le 19/07/2017 à 18:02:24

Bonjour,
est-ce que l'ecart entre 2 mesures est important ?
Un serveur web est loin d'une horloge suisse ;-) En fonction de la charge du serveur, de la mise en cache et du contenu du script PHP, les temps d'execution peuvent varier.
En regle generale, des ecarts dans le temps d'execution sont tout a fait normal.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
tuto - webmaster
Mise a jour
26/10/2010
Visualisation
vu 33682 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 267 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Franzi dans java

Bonjour,
Le code est simple et compile, après être entré dans public void connect, il n'effectue pas this.session.get.transport et s'arrête. Sous eclipse avec Tomcat, j'ob...

Publié par Connan dans php5

j'utilise mysql phpmyadmin et j'ai cree une table IP mais j'ai mis varchart(15) mais quese qui faut que je fasse pour stocker l'ip des joueurs qui s'inscrivent

Publié par Romaingineer dans tuto

Question un peu similaire celle de nicolasterraes.

Je ne trouve pas de ligne dans wpcontentthemes, j'en trouve 2 ou trois dans WP includes mais qui utilsent la fonction echo...

Du coup...

Publié par pacman dans java

thanks for sharing, that s great!

Publié par Vincent dans tuto

Sympa votre petit script :) Oui il existe des bibliotheques deja toutes faites mais elles sont en general 50x plus lourdes que ce petit bout de code qui fait exactement ce qu'il faut. En plus votr...