Subversion Repositories Applications.framework

Rev

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

Rev 84 Rev 105
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
// declare(encoding='UTF-8');
2
/** Fichier de la classe Chronometre
3
/** Fichier de la classe Chronometre
3
* 
4
* 
4
* PHP Version 5 
5
* PHP Version 5 
5
* 
6
* 
6
* @category  PHP
7
* @category  PHP
Line 11... Line 12...
11
* @version   SVN: <svn_id> 
12
* @version   SVN: <svn_id> 
12
* @link      /doc/framework/ 
13
* @link      /doc/framework/ 
13
*/
14
*/
Line 14... Line 15...
14
 
15
 
15
/** Classe Chronometre() - Permet de stocker et d'afficher 
16
/** Classe Chronometre() - Permet de stocker et d'afficher 
16
* les temps d'éxécution de script.
17
* les temps d'éxécution de script.
17
*
18
*
18
* Cette classe permet de réaliser un ensemble 
19
* Cette classe permet de réaliser un ensemble 
19
* de mesure de temps prises à
20
* de mesure de temps prises à
20
* différents endroits d'un script.
21
* différents endroits d'un script.
21
* Ces mesures peuvent ensuite être affichées au
22
* Ces mesures peuvent ensuite être affichées au
22
* sein d'un tableau XHTML.
23
* sein d'un tableau XHTML.
23
* 
24
* 
24
* 
25
* 
25
* PHP Version 5 
26
* PHP Version 5 
Line 41... Line 42...
41
        $this->setTemps(array('depart' => microtime()));
42
        $this->setTemps(array('depart' => microtime()));
42
    }
43
    }
Line 43... Line 44...
43
 
44
 
44
    /** Accesseurs : 
45
    /** Accesseurs : 
45
     * 
46
     * 
46
     * @param string $cle la cle associée à un chronomètre particulier
47
     * @param string $cle la cle associ�e � un chronom�tre particulier
47
     * 
48
     * 
48
     * @return int le temps écoulé
49
     * @return int le temps �coul�
49
     */
50
     */
50
    public function getTemps($cle = null) {
51
    public function getTemps($cle = null) {
51
        $temps = '';
52
        $temps = '';
52
    	if (!is_null($cle)) {
53
    	if (!is_null($cle)) {
Line 57... Line 58...
57
        return $temps;
58
        return $temps;
58
    }
59
    }
Line 59... Line 60...
59
 
60
 
60
    /** Setteur pour la variable temps 
61
    /** Setteur pour la variable temps 
61
     *
62
     *
62
     * @param array() $moment ajoute des points de chronométrage au tableau _temps
63
     * @param array() $moment ajoute des points de chronom�trage au tableau _temps
63
     * 
64
     * 
64
     * @return null 
65
     * @return null 
65
     */
66
     */
66
    public function setTemps($moment = array ()) {
67
    public function setTemps($moment = array ()) {
67
        array_push($this->_temps, $moment);
68
        array_push($this->_temps, $moment);
Line 68... Line 69...
68
    }
69
    }
Line 69... Line 70...
69
 
70
 
70
    /*** Méthodes : ***/
71
    /*** Méthodes : ***/
71
 
72
 
72
    /** Méthode afficherChrono() - 
73
    /** Méthode afficherChrono() - 
73
    * Permet d'afficher les temps d'éxécution de différentes parties d'un script.
74
    * Permet d'afficher les temps d'éxécution de différentes parties d'un script.
74
    *
75
    *
75
    * Cette fonction permet d'afficher un ensemble de 
76
    * Cette fonction permet d'afficher un ensemble de 
76
    * mesure de temps prises à différents endroits d'un script.
77
    * mesure de temps prises à différents endroits d'un script.
77
    * Ces mesures sont affichées au sein d'un tableau XHTML 
78
    * Ces mesures sont affichées au sein d'un tableau XHTML 
78
    * dont on peut controler l'indentation des balises.
79
    * dont on peut controler l'indentation des balises.
79
    * Pour un site en production, il suffit d'ajouter un style 
80
    * Pour un site en production, il suffit d'ajouter un style 
80
    * #chrono {display:none;} dans la css. De cette façon,
81
    * #chrono {display:none;} dans la css. De cette façon,
81
    * le tableau ne s'affichera pas. Le webmaster lui pourra 
82
    * le tableau ne s'affichera pas. Le webmaster lui pourra 
82
    * rajouter sa propre feuille de style affichant le tableau.
83
    * rajouter sa propre feuille de style affichant le tableau.
83
    * Le développeur initial de cette fonction est Loic d'Anterroches. 
84
    * Le développeur initial de cette fonction est Loic d'Anterroches. 
84
    * Elle a été modifiée par Jean-Pascal Milcent.
85
    * Elle a été modifiée par Jean-Pascal Milcent.
85
    * Elle utilise une variable gobale : $_CHRONO_
86
    * Elle utilise une variable gobale : $_CHRONO_
86
    * 
87
    * 
87
    * @author   Loic d'Anterroches
88
    * @author   Loic d'Anterroches
88
    * @author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
89
    * @author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
89
    * 
90
    * 
90
    * @param    int     $indentation_origine l'indentation de base.
91
    * @param    int     $indentation_origine l'indentation de base.
91
    * @param    int     $indentation le pas d'indentation.
92
    * @param    int     $indentation le pas d'indentation.
92
    * @return   string  la chaine XHTML de mesure des temps.
93
    * @return   string  la chaine XHTML de mesure des temps.
93
    */
94
    */
94
    public function afficherChrono($indentation_origine = 8, $indentation = 4) {
95
    public function afficherChrono($indentation_origine = 8, $indentation = 4) {
95
        // Création du chrono de fin
96
        // Création du chrono de fin
Line 96... Line 97...
96
        $GLOBALS['_SCRIPT_']['chrono']->setTemps(array (
97
        $GLOBALS['_SCRIPT_']['chrono']->setTemps(array (
97
            'fin' => microtime()
98
            'fin' => microtime()
98
        ));
99
        ));
99
 
100
 
100
        // Début création de l'affichage
101
        // Début création de l'affichage
101
        $sortie = str_repeat(' ', $indentation_origine) .
102
        $sortie = str_repeat(' ', $indentation_origine) .
102
        '<table id="chrono" lang="fr" summary="Résultat du 
103
        '<table id="chrono" lang="fr" summary="Résultat du 
103
            chronométrage du programme affichant la page actuelle.">' . "\n";
104
            chronométrage du programme affichant la page actuelle.">' . "\n";
104
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
105
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
105
        '<caption>Chronométrage</caption>' . "\n";
106
        '<caption>Chronométrage</caption>' . "\n";
106
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
107
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
107
        '<thead>' . "\n";
108
        '<thead>' . "\n";
108
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))) .
109
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))) .
Line 109... Line 110...
109
        '<tr><th>Action</th><th>Temps écoulé (en s.)</th>
110
        '<tr><th>Action</th><th>Temps écoulé (en s.)</th>
110
        <th>Cumul du temps écoulé (en s.)</th></tr>' . "\n";
111
        <th>Cumul du temps écoulé (en s.)</th></tr>' . "\n";
Line 111... Line 112...
111
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
112
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
Line 112... Line 113...
112
        '</thead>' . "\n";
113
        '</thead>' . "\n";
113
 
114
 
114
        $tbody = str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
115
        $tbody = str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
Line 115... Line 116...
115
        '<tbody>' . "\n";
116
        '<tbody>' . "\n";
116
 
117
 
Line 117... Line 118...
117
        $total_tps_ecoule = 0;
118
        $total_tps_ecoule = 0;
118
 
119
 
119
        // Récupération de la première mesure
120
        // Récupération de la premiére mesure
Line 146... Line 147...
146
 
147
 
147
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
148
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
148
        '<tfoot>' . "\n";
149
        '<tfoot>' . "\n";
149
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))) .
150
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 2))) .
150
        '<tr>' .
151
        '<tr>' .
151
        '<th>' . 'Total du temps écoulé (en s.)' . '</th>' .
152
        '<th>' . 'Total du temps écoulé (en s.)' . '</th>' .
152
        '<td colspan="2">' . 
153
        '<td colspan="2">' . 
153
            number_format($total_tps_ecoule, 3, ',', ' ') . '</td>' .
154
            number_format($total_tps_ecoule, 3, ',', ' ') . '</td>' .
154
        '</tr>' . "\n";
155
        '</tr>' . "\n";
155
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .
156
        $sortie .= str_repeat(' ', ($indentation_origine + ($indentation * 1))) .