2012-10-12 63 views
6

我特別希望以某種方式擴展PDO對象,以在每次執行查詢時添加一個內部計數器。我想以某種方式這樣做,我不必更改任何現有查詢或添加額外功能like this suggests計數每個頁面使用PDO加載的查詢數

我不熟悉類或PDO類,但可以這樣做嗎?我將如何去做這件事?

我在想擴展queryexecute,並在每次調用時增加一個存儲的變量。

回答

7

擴展PDO將像其他任何類一樣完成。這是否適合您的需求?在進行初始連接時,唯一的其他代碼更改將不得不實例化此類而不是PDO類。

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

很好用!正是我在找的東西。但是,我把'exec'改成了'prepare'。我認爲這將抓住我所有的用途。 –

+0

OOP太棒了:D – Juddling

+0

這可以以某種方式實現來解釋'PDOStatement'嗎? – Daniel

0

只需執行:

SHOW PROFILES; 

最大Query ID是你所追求的。這也會爲您提供有關最近15個(默認)查詢執行時間的信息。

相關問題