Compter le nombre de requête SQL
Bonjour à tous !
J'utilise pour mon site la PDO [voir doc] pour gérer ma database.
Je voudrais faire une class extendu de PDO (et PDOStatement qui fonctionne avec) afin de leurs ajouter deux compteurs :
- Un compteur de requêtes par page (surement un attribue de PDO).
- Un compteur de requêtes total (surement stocker dans un fichier).
Sachant que 3 méthode permettent de faire des requêtes en BDD il faut que chacun appelle une méthode perso 'increment' :
- Query (PDO)
- Exec (PDO)
- Execute (PDOStatement)
J'ai donc commencer mes deux classes : myPDO et myPDOStatement (escusez moi pour la taille du code mais il y à pas moyen de mettre en secret)
myPDO
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
| <?php
class myPDO extends PDO // On hérite de PDO
{
protected $count;
// GETTER
public function count() { return ($this->count) ? $this->count : 0; }
// FUNCTION
public function increment()
{
$this->count = ($this->count()) ? $this->count()+1 : 1;
// To do : incrementer le fichier
}
// SURCHARGE
function __construct($dsn, $username="", $password="", $driver_options=array())
{
parent::__construct($dsn,$username,$password, $driver_options);
$this->setAttribute(PDO::ATTR_STATEMENT_CLASS, array('myPDOStatement', array($this)));
}
public function query($query)
{
$this->increment();
return parent::query($query);
}
public function exec($query)
{
$this->increment();
return parent::exec($query);
}
}
?> |
myPDOStatement
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
| <?php
class myPDOStatement extends PDOStatement {
public $myStatement;
public $count;
// GETTER
public function count() { return ($this->count) ? $this->count : 0; }
// FUNCTION
public function increment()
{
$this->count = ($this->count()) ? $this->count()+1 : 1;
}
// SURCHARGE
protected function __construct($dbh)
{
$this->myStatement = $dbh;
}
public function execute($input = array ())
{
$this->increment();
return parent::execute($input);
}
}
?> |
Le problème est que je me retrouve avec 2 compteurs... Et je n'arrive pas à trouver comment appelé la méthode myPDO::increment depuis myPDOStatement...
Quelqu'un aurait une solution ??
Merci à tous !