7

我特别希望以PDO某种方式扩展对象以在每次执行查询时添加一个内部计数器。我想这样做的方式是我不必更改任何现有的查询或添加像这样建议的额外功能。

我对类或 PDO 类特别不熟悉,但这可以做到吗?我该怎么办?

我正在考虑在每次调用它们时扩展query和增加一个存储的变量。execute

4

2 回答 2

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;
    }
}
于 2012-10-12T01:26:25.753 回答
0

只需执行:

SHOW PROFILES;

最伟大Query ID的是你所追求的。这还将为您提供有关最近 15 次(默认)查询执行时间的信息。

于 2013-05-18T17:38:43.227 回答