begin process at 2012 05 27 19:10:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP

LOGGER LE TEMPS D'EXÉCUTION DE VOS FONCTIONS PHP


 Information sur la source

Note :
Aucune note
Catégorie :Astuces Classé sous :Log, temps, exécution, fonction, function Niveau :Débutant Date de création :19/04/2010 Date de mise à jour :21/04/2010 17:16:23 Vu / téléchargé :2 914 / 88

Auteur : djroulo

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

 Description

Cliquez pour voir la capture en taille normale
Le temps d'exécution d'une fonction permet de mesurer si vous avez réussi à programmer un script rapide, ou encore si vos requêtes SQL vous font perdre trop de temps par rapport à d'autres... (temps des requêtes imbriquées).

Les temps sont exprimés en secondes. Ex : 0.00023451 secondes

NB : les fichiers de log sont placés dans le répertoire "logs/[NomDeLaFonction].log" à l'endroit où s'exécute la fonction. Vous devez donc au préalable créer un répertoire "logs".

Source

  • <?php
  • if(!function_exists("file_put_contents")){
  • function file_put_contents($filename,$content,$flags=0,$context=NULL){
  • if($flags==0)
  • $flags = FILE_APPEND;
  • $fileHandle = @fopen($filename,$flags);
  • if ($fileHandle === false) {
  • return 0;
  • }
  • else
  • {
  • if (is_array($content)) $content = implode($content);
  • $bytes_written = fwrite($fileHandle, $content);
  • fclose($fileHandle);
  • return $bytes_written;
  • }//else
  • }//function
  • }
  • function LogFunctionExecution($function_name,$message,$start){
  • $filename = "logs/".$function_name.".log";
  • $execution_time = LogExecutionTime($start,microtime(TRUE));
  • $message = $function_name."\t".$message."\t".$execution_time."\n";
  • file_put_contents($filename,$message,FILE_APPEND);
  • //echo "Logging : ".$message." ".$execution_time." seconds<br />";
  • }
  • function LogTimeStart(){
  • return microtime(TRUE);
  • /*
  • $t_timeparts = explode(" ",microtime());
  • $t_starttime = $t_timeparts[1].substr($t_timeparts[0],1);
  • return $t_starttime;
  • */
  • }
  • function LogExecutionTime($start,$end){
  • return number_format($end-$start,6,"."," ");
  • }
  • ?>
<?php
if(!function_exists("file_put_contents")){
	function file_put_contents($filename,$content,$flags=0,$context=NULL){
		if($flags==0)
			$flags = FILE_APPEND;
		$fileHandle = @fopen($filename,$flags);
		if ($fileHandle === false) {
			return 0;
		}
		else
		{
			if (is_array($content)) $content = implode($content);
			$bytes_written = fwrite($fileHandle, $content);
			fclose($fileHandle);
			return $bytes_written;
		}//else
	}//function
}
function LogFunctionExecution($function_name,$message,$start){
	$filename = "logs/".$function_name.".log";
	$execution_time = LogExecutionTime($start,microtime(TRUE));
	$message = $function_name."\t".$message."\t".$execution_time."\n";
	file_put_contents($filename,$message,FILE_APPEND);
	//echo "Logging : ".$message." ".$execution_time." seconds<br />";
}
function LogTimeStart(){
	return microtime(TRUE);
	/*
	$t_timeparts = explode(" ",microtime());
	$t_starttime = $t_timeparts[1].substr($t_timeparts[0],1);
	return $t_starttime;
	*/
}
function LogExecutionTime($start,$end){
	return number_format($end-$start,6,"."," ");
}
?>

 Conclusion

Je vous conseille d'ouvrir les fichiers log avec Notepad++ qui gère très bien les retours "\n".

Licence : vous pouvez modifier / transformer à souhait / utilisation commerciale ou non-commerciale.


Le savoir, c'est le partage !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

21 avril 2010 17:16:24 :
Merci pour vos commentaires, cela m'a permis de mettre à jour mon code et de l'optimiser ! Mise à jour du 2010-04-21 : - compatibilité PHP4 et PHP5 (file_put_contents) - optimisation (microtime)

 Sources du même auteur

Source avec Zip Source avec une capture GÉNÉRATION DE CLASSES D'ACCÈS AUX DONNÉES À PARTIR DES TABLE...
GÉNÉRATION DE FORMULAIRES XHTML
CLASSE OBJET DAO COUCHE D'ACCÈS À MYSQL DATA ACCESS OBJECT
Source avec Zip Source avec une capture CALENDRIER DE SAISIE PHP ET JAVASCRIPT

 Sources de la même categorie

AFFICHÉ SUR UN TABLEAU AVEC PAGINATION ET BASE DE DONNÉES par stormxp
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

 Sources en rapport avec celle ci

CLEF POUR EAN 13 ET 14 par RaftY
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin
FONCTION QUI VÉRIFIE SI L'ARGUMENT EST UN NOMBRE PREMIER par darkelda
EXÉCUTER UNE FONCTION SI C'EN EST UNE par malik7934
TEMPS D'EXECUTION (BIS ET PLUS SIMPLE) par GunLiam

Commentaires et avis

Commentaire de Astalavista le 19/04/2010 22:57:45

Je trouve dommage qu'un programme servant a calculer un temps d'exécution si peut optimisé au niveau de sont temps a lui même :) (j'espère que c'est français)
Pour ma part, la fonction se serais résumé à ça :
function LogFunctionExecution($Function, $arrParams, $msg){
$time = microtime ( true );
$Return = call_user_func_array ( $Function, $arrParams );
$time = microtime( true ) - $time;
file_put_contents ( 'logs/'.$Function.'.log', $msg."\t".$time."\n", FILE_APPEND );
return $Return;
}
Et on pourrais l'utiliser de cette façon :
$SelectedUsers = LogFunctionExecution( 'SelectionerClients', array('ID' => 5), 'Test Fonction');
Le petit défaut de mon code, compatible uniquement PHP > 5 ...

Ha oui, j'ai pas compris pourquoi tu as mit le nom de la fonction appelé dans le log, alors que le fichier à déjà le nom de la fonction ?! ...

Bonne prog !

Commentaire de spoonisback le 20/04/2010 19:33:20

Salut,

4 fonctions non optimisées ne méritent pas un niveau initié.

Pourquoi ne pas avoir fait de classe, les objets sont plus facilement manipulable..?

Commentaire de djroulo le 21/04/2010 17:20:37

Attention tout de même, ces fonctions permettent de mesurer les retours sur des fonctions qui ne renvoient pas toujours le même contenu.

Je m'explique, prenez une fonction qui retourne TRUE ou FALSE suivant une requête SQL. Avec ces fonctions de log, vous êtes capable de mesurer le temps que prendra la fonction d'arriver jusqu'au TRUE et celui d'arriver jusqu'à FALSE...

Merci encore pour vos commentaires qui m'ont permis de corriger.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calcul du temps d'exécution [ par YEBOKOLO ] je cherchais à vérifier un code pour calculer le temps d'exécution d'une page ou d'une requête (sans utiliser un code très ou trop compliqué) et je n' fonction fsockopen [ par chevallier37 ] bonjour , je viens de configurer ( presque ) un serveur dédié sous debian etch , apache2, php5 , je souhaite utiliser la fonction fsockopen mais voilà function_exists mais dans une classe [ par cedriclomb ] Bonjour,je cherche une fonction pour tester si une fonction existe mais dans une class exempleif(function_in_class($this-&gt;{$act}-&gt;getPage()){    chemin fonction javascript [ par emlesna ] Bonsoir,Je fais du web en local sous linux avec apache 2.Une fonction javascript me permet d'afficher une image secondaire au passage de la souris.Cet Utiliser une fonction membre de la classe comme callback [ par Evangun ] Bonjour,je n'arrive pas à spécifier une méthode de la classe courante comme fonction de callback.J'ai tenté plusieurs déclarations sans succès (je sui function minature ne fonction pas [ par speedylol ] bonjour ;-) bonjour j'essaie de créer une fonction miniature et j'ai quelque difficulté pour réalisé cela svp ? j'aurais besoin d'une aide voici mon Gestion de log [ par citt ] Bonjour, Je souhaite mettre en place une gestion de log sur mon site, cette gestion permettrai de savoir qui fait quoi et ou. J'ai développer une cl Exécution d'un executable (Octave) en PHP [ par chiyo420 ] Bonjour à tous ! Je suis débutante en php et j'ai besoin de vos lumières. Cela fait depuis quelques jours que je cherche en vain une solution à mon p appel à une fonction [ par badsha ] Bonjourà tous, je programme en ZEND et je voudrai savoir comment je peux faire appel a une fonction,par exemple ma fonction ZEND_FUNCTION(hello) { RE Fonction tzdelata en panne [ par RenardB ] Bonjour a tous j'ai pas l'habitude d'appeler a l'aide mais la je suis perdu sur le temps. pour mon site je récupère une variable (ici :2010-25-03 17:


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,842 sec (4)

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