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 !

CLASSE DE CALCUL DE TEMPS D'ÉXECUTION


Information sur la source

Description

depuis le temps que je prends des codes sur ce site il fallait bien que je poste quelque chose

je cherhcais un compteur multiple de temps d'execution pour mon site
mais ne trouvant rien que des petits compteurs sur le site

j'ai donc créé très récemment une classe permettant de calculer le temps d'execution
elle fonctionne sur la basse d'un "message stack"

donc voici ma classe:
 

Source

  • <?php
  • /*
  • Script par Stéphane Goetz
  • ce script permet de créer a la volée des
  • compteurs de temps d'éxecution
  • */
  • class timeStack {
  • // class constructor
  • function timeStack() {
  • $this->messages = array();
  • }
  • // class methods
  • function open($class) {
  • $this->messages[] = array('class' => $class, 'time' => array_sum(explode(' ', microtime())));
  • }
  • function close($class) {
  • for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
  • if ($this->messages[$i]['class'] == $class) {
  • $this->messages[$i]['time'] = round(array_sum(explode(' ', microtime())) - $this->messages[$i]['time'], 4);
  • }
  • }
  • }
  • function display($class = 'view_all_stacks') {
  • if($class == 'view_all_stacks'){
  • echo '<table border="1">';
  • echo '<tr><th>Nom</th><th>Temps</th></tr>';
  • for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
  • echo '<tr><td>'.$this->messages[$i]['class'].'</td><td>'.$this->messages[$i]['time'].'</td></td>';
  • }
  • echo '</table>';
  • } else {
  • for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
  • if ($this->messages[$i]['class'] == $class) {
  • echo '<div style="border-color:red;">'.$this->messages[$i]['class'].': '.$this->messages[$i]['time'].'</div>';
  • }
  • }
  • }
  • }
  • function reset() {
  • $this->messages = array();
  • }
  • function size($class) {
  • $count = 0;
  • for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
  • if ($this->messages[$i]['class'] == $class) {
  • $count++;
  • }
  • }
  • return $count;
  • }
  • }
  • ?>
  • <?
  • //inclusion et création de la classe
  • include('time_stack.php');
  • $timeStack = new timeStack;
  • //ouverture d'un compteur de test
  • $timeStack->open('test');
  • //attente pour le test
  • sleep(4);
  • //fermeture du compteure
  • $timeStack->close('test');
  • //si le compteur test existe
  • if ($messageStack->size('test') > 0) {
  • //affichage du compteur de test
  • $timeStack->display('test');
  • }
  • // si il n'y a pas de paramètre dans la fonction display
  • //elle affiche un tableau avec toutes les données
  • $timeStack->display();
  • ?>
<?php
/*
  Script par Stéphane Goetz
  
  ce script permet de créer a la volée des 
  compteurs de temps d'éxecution
 
*/

  class timeStack {

// class constructor
    function timeStack() {
      $this->messages = array();
    }

// class methods
    function open($class) {
        $this->messages[] = array('class' => $class, 'time' => array_sum(explode(' ', microtime())));
    }
	
	function close($class) {
      for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
        if ($this->messages[$i]['class'] == $class) {
          $this->messages[$i]['time'] = round(array_sum(explode(' ', microtime())) - $this->messages[$i]['time'], 4);
        }
      }
    }

    function display($class = 'view_all_stacks') {
		if($class == 'view_all_stacks'){
			echo '<table border="1">';
			echo '<tr><th>Nom</th><th>Temps</th></tr>';
			for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
				echo '<tr><td>'.$this->messages[$i]['class'].'</td><td>'.$this->messages[$i]['time'].'</td></td>';
			}
			echo '</table>';
		} else {
			for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
				if ($this->messages[$i]['class'] == $class) {
					echo '<div style="border-color:red;">'.$this->messages[$i]['class'].': '.$this->messages[$i]['time'].'</div>';
				}
			}
		}
    }
	
    function reset() {
      $this->messages = array();
    }
	
    function size($class) {
      $count = 0;

      for ($i=0, $n=sizeof($this->messages); $i<$n; $i++) {
        if ($this->messages[$i]['class'] == $class) {
          $count++;
        }
      }

      return $count;
    }
  
  
  }
?>

<?

//inclusion et création de la classe
include('time_stack.php');
$timeStack = new timeStack;

//ouverture d'un compteur de test
$timeStack->open('test');

//attente pour le test
sleep(4);

//fermeture du compteure
$timeStack->close('test');

//si le compteur test existe
if ($messageStack->size('test') > 0) {
//affichage du compteur de test
	$timeStack->display('test');
}

// si il n'y a pas de paramètre dans la fonction display 
//elle affiche un tableau avec toutes les données
$timeStack->display();

?>

Conclusion

désolé si le code n'est pas beaucoup commenté
je n'ai pas pris le temps de le faire

mais le script est facile à utiliser
 

Commentaires et avis

signaler à un administrateur
Commentaire de kankrelune le 27/08/2006 14:40:17

Salut...

C'est pas mal mais en cas de bench multiple c'est chiant de devoir créer un nom pour l'index... perso j'utilise un index numérique qui s'incrémente à chaque nouvelle entrée l'index étant renvoyé par la méthode de création du bench... ce qui donne... .. .

$benchId = $bench->sart();

... le code ...

$bench->stop($benchId);

C'est pas grand chose mais je trouve plus simple... comme ça tu peux retrouver un bench précis grace à l'id généré... par contre dans ton cas je trouve que tu te prend la tête pour retrouver le bench en cours...

pour quoi ne pas faire...

function open($class)
{
   if(!isset($this->messages[$class]))
      $this->messages[$class] = array_sum(explode(' ', microtime()));
         else
             ... on consigne une erreur le bench $class existant déja ...
}
    
function close($class)
{
    if(isset($this->messages[$class]))
       $this->messages[$class]= round(array_sum(explode(' ', microtime())) - $this->messages[$class], 4);
          else
             ... on consigne une erreur le bench $class n'existant pas ...
}

En même temps tu gère ça avec le nom des class ou code benché donc y a pas trop d'alternative me dira tu... .. .

@ tchaOo°

signaler à un administrateur
Commentaire de FhX le 27/08/2006 21:21:32

"je cherhcais un compteur multiple de temps d'execution pour mon site
mais ne trouvant rien que des petits compteurs sur le site"

http://www.phpcs.com/codes/PHP5-CLASSE-BENCHMARK_35497.aspx

Petit mais costaud :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

temps d'execution d'une requete [ par michong ] salut a tous je voudrais avoir le code pour calculer le temps d'execution d'une requete merci a tous temps d'execution de script max_execution_time [ par vincentforce ] Bonjour,J'ai un soucis au niveau du temps d'execution de script sur lequel, apparemment je n'ai aucun contr&#244;le : dans le fichier php.ini, la vari Temps d'execution [ par xactise ] Bonjours a vous tous une question me tarrode l'esprit (encore vous dites vous) et oui :)Voila j'ai lu dans diferent post (forum , commentaires de sour Utiliser une classe template et une autre en meme temps... [ par big_mama ] Bonjour a tous.Mon probleme : Je suis entrain de me faire un pti site, pour cela j'utilise deux classe.La premiere gere les template et la seconde le calcller le temps d'execution via xmlhttprequest [ par el_bassir ] S.V.P:&nbsp;&nbsp; est ce qu'il ya quelqu'un qui connait un moyen de calculer le temps d'execution&nbsp; d'un script par l'objet XMLHTTPREQUEST?&nbsp; Pb temps execution et explorer php [ par elravage ] Voila, j'ai pris un explorateur sur ce site, je l'essai a mon stage et il me parait super. Le hic, c'est que l'explorateur doit voir ce qu'il y a dans Execution d'un script en arrière-plan [ par ZeroCool007 ] Salut, Je cherche &#224; &#233;x&#233;cuter un script php en arri&#232;re-plan pour ne pas bloquer l'utilisateur dans la navigation. Il s'agit d'un un simulateur de clic [ par tikaprod ] bonjour, je suis &#224; la recherche d'un simulateur de clic tr&#232;s particulier voici mes d&#233;sirs pouvoir simuler un clic de souris sous un au Urgent @ barre URL [ par atchoumen ] Bonjour a tous,je n'&nbsp;ai pas reussi a trouver la reponse sur le net ou dans ce forum alors je compte sur vous les dvpeurs. En faite je voudrais fa Envoie de mail en meme temps que les données s'enregistre dans la base de données [ par danytoss ] Bonjour,Je suis un hypernovice en mati&#232;re de programmation, je suis actuellement en train de faire une petit base de donn&#233;es pour mon entrep


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements



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,265 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é.