Logger le temps d'exécution de vos fonctions php

Soyez le premier à donner votre avis sur cette source.

Vue 4 192 fois - Téléchargée 177 fois

Description

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 / Exemple :


<?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 !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

djroulo
Messages postés
25
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
21 octobre 2008
-
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.
cs_spoonisback
Messages postés
72
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
5 février 2010
-
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..?
cs_Astalavista
Messages postés
194
Date d'inscription
lundi 24 décembre 2001
Statut
Membre
Dernière intervention
3 février 2010
-
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 !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.