2012-10-12 10 views
6

Ich bin speziell auf die PDO Objekt irgendwie zu erweitern, um einen internen Zähler jedes Mal, wenn eine Abfrage ausgeführt wird, hinzuzufügen. Ich möchte dies auf eine Art und Weise tun, wo ich keine meiner bestehenden Abfragen ändern oder eine zusätzliche Funktion like this suggests hinzufügen müsste.Anzahl der Abfragen zählen Jede Seite laden mit PDO

Ich bin nicht so vertraut mit Klassen oder der PDO-Klasse im Besonderen, aber könnte dies getan werden? Wie würde ich darüber gehen?

Ich denke, erweitern query und execute und erhöhen Sie eine gespeicherte Variable jedes Mal, wenn sie aufgerufen werden.

Antwort

7

Erweitern PDO würde wie jede andere Klasse durchgeführt werden. Würde das Ihren Bedürfnissen entsprechen? Die einzige andere Codeänderung wäre die Instanziierung dieser Klasse anstelle der Klasse PDO, wenn Sie Ihre erste Verbindung herstellen.

class PDOEx extends PDO 
{ 
    private $queryCount = 0; 

    public function query($query) 
    { 
    // Increment the counter. 
     ++$this->queryCount; 

    // Run the query. 
     return parent::query($query); 
    } 

    public function exec($statement) 
    { 
    // Increment the counter. 
     ++$this->queryCount; 

    // Execute the statement. 
     return parent::exec($statement); 
    } 

    public function GetCount() 
    { 
     return $this->queryCount; 
    } 
} 
+1

Funktioniert gut! Genau das, wonach ich gesucht habe. Allerdings habe ich 'exec' in' prepare' geändert. Ich denke, das wird alle meine Anwendungen erfassen. –

+0

OOP ist so toll: D – Juddling

+0

Kann dies irgendwie implementiert werden, um 'PDOStatement' zu berücksichtigen? – Daniel

0

einfach ausführen:

SHOW PROFILES; 

Die größte Query ID ist, was Sie sind. Dies gibt Ihnen auch Informationen über die letzten 15 (Standard) Abfrage Ausführungszeit.

Verwandte Themen