Я специально хочу расширить объект PDO
чтобы добавить внутренний счетчик каждый раз, когда выполняется запрос. Я хочу сделать это в некотором смысле, если бы мне не пришлось менять какие-либо из моих существующих запросов или добавлять дополнительные функции, подобные этим .
Я не знаком с классами или классом PDO в частности, но можно ли это сделать? Как я могу это сделать?
Я думаю, продлить query
и execute
и увеличивать сохраненную переменную каждый раз, когда они вызывают.
Расширение 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; } }
Просто выполните:
SHOW PROFILES;
Самый большой Query ID
– это то, что вам нужно. Это также даст вам информацию о последних 15 (по умолчанию) времени выполнения запроса.