我特意想在每次执行查询时以某种方式扩展PDO
对象以添加内部计数器。我希望以某种方式执行此操作,因为我不必更改任何现有查询或添加额外函数like this suggests。
我不熟悉类或PDO类,但是可以这样做吗?我该怎么做呢?
我在考虑扩展query
和execute
并在每次调用时增加存储的变量。
答案 0 :(得分: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 :(得分:0)
执行:
SHOW PROFILES;
最伟大的Query ID
就是你所追求的。这也将为您提供有关最近15(默认)查询执行时间的信息。