bonjour,
j'ai récupérer un extend de PDO sur un autre forum pour obtenir le temps de chacune de mes requêtes que voici et qui fonctionne très bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
<?php
 
class MyPDO extends PDO {
 
    protected $counter 		= 0;
    protected $racine;
    protected $memoryQuery	= array();
    protected $time		= 0;
 
    // GETTER
 
    //nombre de requete
    public function getCounter() {
        return $this->counter;
    }
 
    //liste des requetes effectué avec leur temps d'excution
    public function memoryQuery() {
        return $this->memoryQuery;
    }
 
    //temps total
    public function time() {
        return $this->time;
    }
 
    public function increment() {
        $this->counter ++;
    }
 
    public function addQuery($query, $time=0) {
        $this->memoryQuery[$this->getCounter()]['query'] = $query;
        $this->memoryQuery[$this->getCounter()]['time'] = $time;
 
    }
 
    public function addTime($time) {
        $this->time += $time;
    }
 
    function __construct($dsn, $username="", $password="", $driver_options=array()) {
        parent::__construct($dsn,$username,$password, $driver_options);
 
        // Utilisation de myPDOStatement
        $this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('myPDOStatement', array($this)));
    }
 
 
    public function query($query) {
 
        $tmpTemps = microtime(true);
        $return = parent::query($query);
        $addTime = round(microtime(true) - $tmpTemps,5);
 
        $this->addQuery($query,$addTime);
        $this->addTime($addTime);
        $this->increment();
 
        return $return;
    }
 
 
    public function exec($query) {
 
        $tmpTemps = microtime(true);
        $return = parent::exec($query);
        $addTime = round(microtime(true) - $tmpTemps,5);
 
        $this->addQuery($query,$addTime);
        $this->addTime($addTime);
        $this->increment();
 
        return $return;
    }
pour l'utiliser, je mets cela dans la page ou se trouve mes requêtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 print_r($dbo->memoryQuery());
qui m'affiche ce-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Array
(
    [0] => Array
        (
            [query] => SELECT .....
 
             [time] => 0.06189
        )
 
    [1] => Array
        (
            [query] =>SELECT .....
 
          [time] => 0.0200
        )
ce que j'aimerai c'est "mettre" les valeurs de $dbo->memoryQuery() dans un fichier.
j'ai fais cela pour l'écriture:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
   if(file_exists('temps.txt'))
     {
            echo 'Le fichier existe';
            echo "<br>";
            $ressource_fichier = fopen('temps.txt', 'w');
 
            if($ressource_fichier AND is_writable('temps.txt')) //Si $ressource_fichier ne vaut pas FALSE et que le fichier est accessible en écriture alors on peut continuer
            {
                echo "<pre>";
                fputs($ressource_fichier,print_r($dbo->memoryQuery())); //Si une erreur a lieu, fputs() renverra FALSE, il faudra dans ce cas utiliser l'opérateur triple égal pour le savoir
                 echo "</pre>";
                fclose($ressource_fichier);
            }
     }
     else
     {
          echo 'Le fichier n\'existe pas';
     }
et la pour l'affichage dans une autre page php:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
 $ressource_fichier = fopen('temps.txt', 'r');
 
     if($ressource_fichier) //Si $ressource_fichier ne vaut pas FALSE on peut continuer
     {
          $contenu_fichier   = '';
 
          while(!feof($ressource_fichier)) //Tant que l'on est pas à la fin du fichier
          {
               $contenu_fichier .= fgets($ressource_fichier); //Récupère la ligne en cours et l'ajoute au contenu de la variable $contenu_fichier
          }
 
          fclose($ressource_fichier);
 
          echo $contenu_fichier; //affiche le contenu du fichier
     }
mon problème c'est que lorsque je vais voir mon fichier temps.txt il m'affiche '1'. si je mets pas print_r il va afficher "$dbo->memoryQuery()". je n'arrive pas avoir comment faire.
merci d'avance.