Afficher le temps d'exécution d'une page

Il peut être intéressant d'afficher le temps d'exécution d'une page pour voir si le code s'exécute rapidement ou pas.

C'est dur?

Non (sauf si vous ne savez pas faire des calculs de primaire).

Comment faire?

C'est simple, il suffit de récupérer le temps au début et à la fin de la page, d'en faire la différence et de l'afficher.

On va utiliser la fonction time()?

Non car cette fonction ne renvoie qu'un nombre de secondes et comme votre serveur est une bête de compétion il ne lui faudra qu'une fraction de seconde pour interprèter vos scripts! Nous allons plutôt utiliser la fonction microtime() qui renvore le nombre de milisecondes.

Pourtant, il y a certaines pages qui mettent plusieures secondes avant de s'afficher?

C'est normal. En fait, le serveur a exécuté la page en quelques instants mais c'est le téléchargement de celle-ci qui est un peu plus long.

Tapons maintenant ceci dans un fichier PHP pour voir ce que la fonction microtime affiche:

<?php
echo microtime();
?>

Qu'est-ce qui s'affiche???
0.29867910 1840267234
un tas de nombres incompréhensibles!

Petite explication: le premier groupe de chiffres est le temps qu'il faudra ajouter au timestamp (compteur numérique servant de référence temporelle) et le second groupe de chiffres est le timestamp.
Il va donc falloir faire 1840267234+0.29867910; refaire cette même manipulation à la fin du fichier puis faire la différence entre les deux nombres obtenus. Vous aurez alors le temps de création de votre page.

Je suis perdu, je n'ai rien compris!

Ce n'est pas grave, je vais expliquer plus en détail. Nous allons mettre au début de la page une fonction qui va récupérer le temps et la stocker dans une variables. Ensuite, on ne s'en inquiète plus et on tape son code HTML commme d'habitude! Arrivés à la fin du ficher, on remet la même fonction qui recherche le temps et le stocke dans une autre variable. Pour l'instant, on a deux variables. Pour avoir le temps, on va prendre la variable temps de la fin du fichier et la soustraire à la variable temps du début du ficher pour avoir l'intervalle de temps écoulé (la durée de création de la page). Il suffit alors de l'afficher avec un echo.

Mais comment on fait pour mettre les deux groupes de chiffres dans des variables différentes pour pouvoir les additionner?

Vous saviez déjà qu'il fallait mettre les deux groupes dans des variables??? Bravo! C'est en effet ce que nous allons faire. Nous allons utiliser une fonction qui va prendre les deux groupes et les stocker dans un array. Une fois que nous aurons ces deux données séparées, il suffit de les additioner et le plus dur est fait!

Voici comment faire pour séparer les groupes:

$execution = microtime();
$execution = explode(' ',$execution);
$execution_debut = $execution[1]+$execution[0];

Tout d'abord on récupère le temps, ensuite on sépare les deux membres et on les stocke dans l'array grâce à la fonction explode(), on additione les deux membres et on place le résultat obtenu dans une variable.
Voilà, l'affichage du temps d'exécution est bientôt terminé. IL ne reste plus qu'à faire un copier/coller du code à la fin de votre fichier, de faire la différence entre les deux variables et de l'afficher.
Allez-y, lancez-vous!
... C'est bon, vous avez affiché le temps d'exécution sur votre page? Alors voici la correction:


<?php
$execution = microtime();
$execution = explode(' ',$execution);
$execution_debut = $execution[1]+$execution[0];
?>
<html>
...Suite du code en HTML...
<?php
$execution = microtime();
$execution = explode(' ',$execution);
$execution_fin = $execution[1]+$execution[0];
$temps = $execution_fin-$execution_debut;
echo'Page générée en'.$temps.'secondes.';
?>
</body></html>

C'est génial, le temps s'affiche! Mais j'ai des tonnes de chiffres après la virgule ! Il n'y a pas moyen de les limiter?

Bien sûr que si! Pour ce faire, il vous suffit de rajouter cette ligne avant le echo:


$temps = round(($temps),4);

Votre temps sera alors limité à 4 nombres décimaux.

Et voilà, le temps d'affichage s'affiche désormais sur vos pages!

Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.3439 secondes.
Retour en haut de la page
Imprimer cette page

Valid XHTML 1.0 Transitional