Subversion Repositories Applications.framework

Rev

Rev 304 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 304 Rev 316
Line 9... Line 9...
9
 * @package	Framework
9
 * @package	Framework
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
11
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
13
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
13
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2 
14
 * @version	$Id: Chronometre.php 241 2010-12-06 15:19:07Z jpm $
14
 * @version	$Id: Chronometre.php 316 2011-02-07 17:39:58Z jpm $
15
 * @link		/doc/framework/
15
 * @link		/doc/framework/
16
 */
16
 */
17
class Chronometre {
17
class Chronometre {
18
	/*** Attributs : ***/
18
	/*** Attributs : ***/
19
	private static $pointArretNumero = 1;
19
	private static $pointArretNumero = 1;
Line 24... Line 24...
24
	 * @param string $cle la cle associée à un chronomètre particulier
24
	 * @param string $cle la cle associée à un chronomètre particulier
25
	 *
25
	 *
26
	 * @return int le temps écoulé
26
	 * @return int le temps écoulé
27
	 */
27
	 */
28
	private static function getTemps($cle = null) {
28
	private static function getTemps($cle = null) {
-
 
29
		if (is_null($cle)) {
-
 
30
			$temps = self::$temps;
-
 
31
		} else {
29
		$temps = (is_null($cle)) ? self::$temps : self::$temps[$cle];
32
			foreach (self::$temps as $temps_enrg) {
-
 
33
				if (isset($temps_enrg[$cle])) {
-
 
34
					$temps = $temps_enrg;
-
 
35
					break;
-
 
36
				}
-
 
37
			}
-
 
38
		}
30
		return $temps;
39
		return $temps;
31
	}
40
	}
Line 32... Line 41...
32
 
41
 
33
	/** Setteur pour la variable temps
42
	/** Setteur pour la variable temps
Line 49... Line 58...
49
	 *
58
	 *
50
	 * @param string le nom du point de chronométrage
59
	 * @param string le nom du point de chronométrage
51
	 * @return null
60
	 * @return null
52
	 */
61
	 */
53
	public static function chrono($cle = null) {
62
	public static function chrono($cle = null) {
-
 
63
		if ($cle == null) {
54
		$cle = ($cle == null) ? self::$pointArretNumero++ : $cle;
64
			$cle = (count(self::$temps) == 0) ? 'Début' : self::$pointArretNumero++;
-
 
65
		}
55
		$moment = microtime();
66
		$moment = microtime();
56
		self::setTemps($cle, $moment);
67
		self::setTemps($cle, $moment);
57
	}
68
	}
Line 58... Line 69...
58
	
69
	
Line 71... Line 82...
71
	* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
82
	* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
72
	* @param string l'eventuel nom du point de chronométrage de fin.
83
	* @param string l'eventuel nom du point de chronométrage de fin.
73
	* @return   string  la chaine XHTML de mesure des temps.
84
	* @return   string  la chaine XHTML de mesure des temps.
74
	*/
85
	*/
75
	public static function afficherChrono($cle = null) {
86
	public static function afficherChrono($cle = null) {
-
 
87
		if (count(self::$temps) == 0) {
-
 
88
			$sortie = "Aucun chronométrage à l'aide de Chronometre::chrono() n'a été réalisé.";
-
 
89
		} else {
76
		// Création du chrono de fin
90
			// Création du chrono de fin
77
		self::chrono();
91
			self::chrono('Fin');
78
 
92
			
79
		$total_tps_ecoule = 0;
93
			$total_tps_ecoule = 0;
80
		// Récupération de la premiére mesure
-
 
81
		$tab_depart = self::getTemps(0);
94
			$tps_debut = null;
82
		list ($usec, $sec) = explode(' ', $tab_depart['depart']);
-
 
83
 
-
 
84
		// Ce temps correspond à tps_fin
-
 
85
		$tps_debut = ((float) $usec + (float) $sec);
-
 
86
		
-
 
87
		$tbody = '';
95
			$tbody = '';
88
		foreach (self::getTemps() as $tab_temps) {
96
			foreach (self::getTemps() as $temps) {
89
			foreach ($tab_temps as $cle => $valeur) {
97
				foreach ($temps as $cle => $valeur) {
-
 
98
					// Récupération de la premiére mesure
-
 
99
					if (is_null($tps_debut)) {
90
				list ($usec, $sec) = explode(' ', $valeur);
100
						$tps_debut = self::getMicroTime($valeur);
-
 
101
					}
-
 
102
					// Récupération de la mesure courrante
91
				$tps_fin = ((float) $usec + (float) $sec);
103
					$tps_fin = self::getMicroTime($valeur);
92
 
104
	
93
				$tps_ecoule = abs($tps_fin - $tps_debut);
105
					$tps_ecoule = abs($tps_fin - $tps_debut);
94
				$total_tps_ecoule += $tps_ecoule;
106
					$total_tps_ecoule += $tps_ecoule;
95
				$tps_debut = $tps_fin;
107
					$tps_debut = $tps_fin;
96
				
108
					
97
				// Gestion affichage
109
					// Gestion affichage
98
				$total_tps_ecoule_fmt = number_format($total_tps_ecoule, 3, ',', ' ');
110
					$total_tps_ecoule_fmt = number_format($total_tps_ecoule, 3, ',', ' ');
99
				$tps_ecoule_fmt = number_format($tps_ecoule, 3, ',', ' ');
111
					$tps_ecoule_fmt = number_format($tps_ecoule, 3, ',', ' ');
100
				$tbody .= '<tr><th>'.$cle.'</th><td>'.$tps_ecoule_fmt.'</td><td>'.$total_tps_ecoule_fmt.'</td></tr>'."\n";
112
					$tbody .= '<tr><th>'.$cle.'</th><td>'.$tps_ecoule_fmt.'</td><td>'.$total_tps_ecoule_fmt.'</td></tr>'."\n";
-
 
113
				}
101
			}
114
			}
-
 
115
			$total_tps_ecoule_final_fmt = number_format($total_tps_ecoule, 3, ',', ' ');
-
 
116
			// Début création de l'affichage
-
 
117
			$sortie = '<table id="chrono" lang="fr" summary="Résultat duchronométrage du programme affichant la page actuelle.">'."\n".
-
 
118
				'<caption>Chronométrage</caption>'."\n".
-
 
119
				'<thead>'."\n".
-
 
120
				'	<tr><th>Action</th><th>Temps écoulé (en s.)</th><th>Cumul du temps écoulé (en s.)</th></tr>'."\n".
-
 
121
				'</thead>'."\n".
-
 
122
				'<tbody>'."\n".
-
 
123
					$tbody.
-
 
124
				'</tbody>'."\n".
-
 
125
				'<tfoot>'."\n".
-
 
126
				'	<tr><th>Total du temps écoulé (en s.)</th><td colspan="2">'.$total_tps_ecoule_final_fmt.'</td></tr>'."\n".
-
 
127
				'</tfoot>'."\n".
-
 
128
				'</table>'."\n";
102
		}
129
		}
103
		$total_tps_ecoule_final_fmt = number_format($total_tps_ecoule, 3, ',', ' ');
-
 
104
		// Début création de l'affichage
-
 
105
		$sortie = '<table id="chrono" lang="fr" summary="Résultat duchronométrage du programme affichant la page actuelle.">'."\n".
-
 
106
			'<caption>Chronométrage</caption>'."\n".
-
 
107
			'<thead>'."\n".
-
 
108
			'	<tr><th>Action</th><th>Temps écoulé (en s.)</th><th>Cumul du temps écoulé (en s.)</th></tr>'."\n".
-
 
109
			'</thead>'."\n".
-
 
110
			'<tbody>'."\n".
-
 
111
				$tbody.
-
 
112
			'</tbody>'."\n".
-
 
113
			'<tfoot>'."\n".
-
 
114
			'	<tr><th>Total du temps écoulé (en s.)</th><td colspan="2">'.$total_tps_ecoule_final_fmt.'</td></tr>'."\n".
-
 
115
			'</tfoot>'."\n".
-
 
116
			'</table>'."\n";
-
 
117
 
-
 
118
		return $sortie;
130
		return $sortie;
119
	}
131
	}
-
 
132
	
-
 
133
	private static function getMicroTime($utps) {
-
 
134
	    list($usec, $sec) = explode(' ', $utps);
-
 
135
	    return ((float)$usec + (float)$sec);
-
 
136
	}
120
}
137
}
121
?>
138
?>
122
139