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
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
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; }
qui m'affiche ce-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part print_r($dbo->memoryQuery());
ce que j'aimerai c'est "mettre" les valeurs de $dbo->memoryQuery() dans un fichier.
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 )
j'ai fais cela pour l'écriture:
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
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'; }
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.
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 }
merci d'avance.
Partager