valeurs de $dbo->memoryQuery() dans un fichier
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:
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:
print_r($dbo->memoryQuery());
qui m'affiche ce-ci:
Code:
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:
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:
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.