Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DU TEMPS D'EXÉCUTION D'UNE PAGE


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 07/12/2004 Date de mise à jour : 08/12/2004 14:38:23 Vu : 4 205

Note :
Aucune note

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

Description

Ce code source comporte deux fonctions (une que l'on doit placer au tout début du fichier et une qui doit être placée où l'on souhaite afficher le temps d'exécution PHP de la page).

On peut aussi choisir la précision que l'on souhaite donner à la valeur du temps d'exécution de la page.
 

Source

  • <?php
  • /* FONCTIONS PERMETTANT DE CALCULER LE TEMPS D'EXÉCUTION D'UNE PAGE */
  • function debut_calcultemps() {
  • $trouver_temps = explode(' ',microtime() );
  • $temps_debut = $trouver_temps[1].substr($trouver_temps[0], 1);
  • return $temps_debut;
  • }
  • function ecrire_temps($temps_debut,$precision) {
  • $partie_temps = explode(' ',microtime() );
  • $fin_temps = $partie_temps[1].substr($partie_temps[0],1);
  • $chrono = number_format($fin_temps - $temps_debut, 4);
  • if($precision > strlen($chrono)) { //si la precision demandée est plus grande que la longueur de la chaine
  • $chrono = substr($chrono, 0, strlen($chrono)); //on donne la precision maximale
  • } else {
  • $chrono = substr($chrono, 0, $precision);
  • }
  • return $chrono;
  • }
  • /*
  • au début de la page, il faut écrire ceci :
  • $debut = debut_calcultemps();
  • et à la fin, ceci :
  • echo ecrire_temps($debut, "4"); où "4" est la précision du temps donné
  • */
  • ?>
<?php

/* FONCTIONS PERMETTANT DE CALCULER LE TEMPS D'EXÉCUTION D'UNE PAGE */
function debut_calcultemps() { 
$trouver_temps = explode(' ',microtime() ); 
$temps_debut = $trouver_temps[1].substr($trouver_temps[0], 1); 
return $temps_debut; 
} 

function ecrire_temps($temps_debut,$precision) { 
$partie_temps = explode(' ',microtime() ); 
$fin_temps = $partie_temps[1].substr($partie_temps[0],1); 
$chrono = number_format($fin_temps - $temps_debut, 4); 
if($precision > strlen($chrono)) {                      //si la precision demandée est plus grande que la longueur de la chaine
$chrono = substr($chrono, 0, strlen($chrono));          //on donne la precision maximale
} else {
$chrono = substr($chrono, 0, $precision);
}
return $chrono; 
} 
/*
au début de la page, il faut écrire ceci : 
$debut = debut_calcultemps(); 

et à la fin, ceci : 
echo ecrire_temps($debut, "4");   où "4" est la précision du temps donné
*/

?>

Conclusion

Bref, ce petit code un peu inutile s'utilise très facilement étant donné la simplicité du codage, et je ne vois pas du tout comment vous pourriez avoir de la difficulté à l'utiliser.
 

Historique

07 décembre 2004 14:38:47 :
- Correction d'une petite variable défectueuse
08 décembre 2004 02:27:29 :
Re-correction de variables défectueuses
08 décembre 2004 14:38:23 :
Erreur de vocabulaire de ma part. Je m'en excuse ;)

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 07/12/2004 18:49:02

euh.. y a moyen d'utiliser ta prmière fonction dans ta seconde (ce qui rendrait plus clair ta page)
et ton exemple a la fon ne fonctionne pas....

à quoi sert explode exactement ?
Et microtime renvoi quoi ?

signaler à un administrateur
Commentaire de transfear le 08/12/2004 02:32:45

Primo: non il n'y a pas moyen d'inclure la première fonction dans la seconde car il faut définir un moment de départ dans la premiere fonction qui sert de point de départ pour le chrono. Si on l'inclus dans la seconde fonction, le temps de chargement de la page ne sera plus le même (il sera raccourci de beaucoup).

Secundo: explode sert à créer un tableau (array) dans lequel chaque ligne comporte les microsecondes (en timestamp) séparées par les espaces (un peu comme ferai un float).

Si tu désires plus de détails, tu peux toujours te référer au manuel PHP en ligne disponible à cette adresse:
http://www.php.net/manual/fr/

signaler à un administrateur
Commentaire de Kirua le 08/12/2004 14:33:11

c'est pas le temps de chargement, c'est le temps d'exécution du script (génération de la page par PHP).

signaler à un administrateur
Commentaire de transfear le 08/12/2004 14:36:53

Ouais dans le fond Kirua tu as raison... désolé pour cette erreur de langage ;)

signaler à un administrateur
Commentaire de Kirua le 08/12/2004 14:40:58

y a pas de mal ^^

signaler à un administrateur
Commentaire de stanilou le 11/12/2004 19:03:00

Note: Ton systeme marche vraiment??? Ou alors je ne comprend pas trés bien le sens du mot "EXÉCUTION"...
En fait ce que tu calcule, c'est le temps que met la page dans sa lecture de haut en bas mais non pas le temps d'exécution de la page... Véridique, essai ce petit test, sur un site, tu met une image de 5Mo et tu met ton script (toi tu prend un chrono en main), regarde le temps qu'il calcule compare à celui pris au chrono... Ca fait une différence énorme.
(Si tu ne veut pas t'embéter va sur http://membres.lycos.fr/natsboss/fera.php en regarde la diiférence entre le vrai temps, dans la barre de status et celui de avec ta technique juste en dessous de la photo... Compare la différence énorme de temps!)
Ps: Je te dit ça car j'avais dejà pensé a ce type de script mais les résulats n'était pas réél...

Bye bye

signaler à un administrateur
Commentaire de transfear le 11/12/2004 20:37:07

Oh mais tu as tout à fait raison, mais c'est le sens du mot exécution qui est défaillant, ici... je conçois bien que ce mot ne convient pas à tout le monde (certains l'apellent chargement, d'autres exécution, ou, comme toi, lecture entière du script).

En effet, le script ne vérifie pas le temps d'AFFICHAGE de la page, mais bien celle de son exécution, au niveau du serveur ;). Si tu cherches un script donnant le temps d'affichage de la page, désolé mais c'est pas ici lol tu es mieux avec ton chrono ;).

signaler à un administrateur
Commentaire de Kirua le 11/12/2004 22:14:20

À priori, en PHP, et plus largement avec un langage exécuté du côté serveur, tu ne pourras jamais calculer le temps de chargement (de téléchargement de la page), justement parce que le script php prend fin avant l'envoie des données (sauf si tu demandes à PHP de flusher la sortie standard le plus souvent possible, mais ça ne résout pas le problème). Ce genre de script te permet uniquement de tester l'efficacité de tes scripts et d'évaluer les capacités de ton serveur, pour éventuellement repérer les pages critiques à optimiser (cache, précalcul, changement du code...)
D'ailleurs, c'est la remarque que j'ai faite il y a 3-4 messages, fallait peut-être lire les comments ^^.

signaler à un administrateur
Commentaire de stanilou le 12/12/2004 00:47:05

Ah oui excuse, j'avais mal compris ce message, en fait c'est le sens du mot "exécution" qui me tracassé... Moi j'avais le temps de chargement de la page mais en javascript...
Ceci dit un detail m'étonne, normalement, le temps d'exuction d'un script php depend du script et du serveur et non du client.... Alors pourquoi est ce que pour moi je met 0,09 secondes alors que d'autre visiteur mettes entre 0,05 et 0,48 secondes? Donc ca veut bien dire qu'il y a un rapport entre le client et le script php...

signaler à un administrateur
Commentaire de Kirua le 12/12/2004 00:53:57

ça dépend de la charge du serveur à ce moment précis, a priori comme ça je vois pas trop ce qui pourrait influencer d'autre. à moins que ton codes ne contiennent des appels à la fonction header() qui modifie les en-têtes HTTP, et je pense (mais je ne suis pas certain) que cette fonction prend effet immédiatement et attend la confirmation du client, auquel cas le temps mis dépendra aussi du client (connexion, vitesse de son client HTTP...). la fonction set_cookie est de la même nature puisque c'est une question d'en-tête HTTP.

signaler à un administrateur
Commentaire de stanilou le 12/12/2004 09:47:24

Ouai ba c'est bizarre car je ne contient pas de header(), ni de cookie dans la page mesuré et quand je lance ma page, moi je met entre 0.08 et 0.11, toujours a n'importe quel moment de la journée... Alors que pour les visiteurs, ça varie entre 0.05 et 0.4 ce qui est vraiment trés large.... Alors pourquoi moi c'est constant alors que je fais des tests trés régulierement? Pourquoi un même visiteur à des valeurs toujours égal à 0.05 près? Ceci restera je pense un mystere...

signaler à un administrateur
Commentaire de coucou747 le 12/12/2004 12:40:37

ton js n'est pas précis et commence qiuand le php à déja été exécuté c'est pour ça...

Faut additionner les deux pour avoir le temps de chargement...

signaler à un administrateur
Commentaire de stanilou le 12/12/2004 12:56:44

Euh t sur?
Par ce que le temps de chargement ca comporte le temps d'affichage des images....

signaler à un administrateur
Commentaire de coucou747 le 12/12/2004 13:02:37

temsp de chargement oui mais temps d'exécution, c'est juste le code...


Regardes ce code :


sleep(7);

si tu ne mets que ça et ton truc js, ton js rends quoi ?? combien ?? selon moi il devrait rendre très peu....

signaler à un administrateur
Commentaire de stanilou le 12/12/2004 13:07:29

Je ne sais pas mais tu as employer le terme "chargement" !

signaler à un administrateur
Commentaire de coucou747 le 12/12/2004 13:46:39

teps de chargement = temps que le client attends

temps d'exécution = temps pendant lequel un programme s'exécute, dans le cas présent le programme est uniquement le code php interprété par apache (ou autre)...

signaler à un administrateur
Commentaire de stanilou le 12/12/2004 14:10:44

Toi tu as dit:
"ton js n'est pas précis et commence qiuand le php à déja été exécuté c'est pour ça...
Faut additionner les deux pour avoir le temps de chargement..."
Or mon js est trés précis, pris au chrono avec un trés long code php (le script indiqué environ 2,3secondes) alors que le chrono indiqué 5,2 et le code js 5,18 !

signaler à un administrateur
Commentaire de coucou747 le 12/12/2004 14:20:30

et si tu ajoutes sleep(7); dans ton code, le résultat du js à vraiment 7 secondes de plus ??

signaler à un administrateur
Commentaire de Kirua le 12/12/2004 16:37:42

il y a une explication possible: comme je le disais plus haut, si le serveur apache envoie les infos au fur et à mesure et que le client est configuré pour également exécuter (lire, interpréter, afficher...) à mesure que les données arrivent, le script JS est bien appelé (pour l'enregistrement du temps) avant l'exécution du PHP, et ça explique tout.

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,25 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.