Как перехватывать БД-запросы? (Баз данных)

Я регулярно сталкиваюсь со следующей ситуацией; Я работаю над существующей системой, созданной на PHP, которая что-то делает, на самом деле довольно много, и обычно она состоит из большого количества кода. Теперь мне нужно расширить некоторые функции, отладить что-то и узнать, как система взаимодействует с MySQL-DB. Какие запросы выполняются в каком порядке.

Как я могу перехватить все запросы? Что-то вроде xdebug_start_trace для базы данных.

EDIT: Централизованная обработка запросов БД отсутствует. Вы найдете там все виды запросов. Поэтому мой вопрос направлен на некоторые функции каротажа. В принципе, это должно существовать, поскольку здравый смысл заключается в том, что что-то подобное может быть полезно.

EDIT2: Марио предложил решение, которое зависит от перезапуска mysql-deamon … no can can. Дополнительные предложения?

Solutions Collecting From Web of "Как перехватывать БД-запросы? (Баз данных)"

Вы можете использовать «общий журнал запросов MySQL», сначала запустив mysqld с параметром --log=fn . http://dev.mysql.com/doc/refman/5.1/en/query-log.html

Если вы проходите PDO, вы можете расширить его до строк журнала или эхо-запросов.

 <?php class PDODebug extends PDO { public function exec ($statement) { var_dump ($statement); // Or log to a file or use firePHP to log to the console return (parent::exec ($statement)); } public function query ($statement) { var_dump ($statement); // Or log to a file or use firePHP to log to the console return (parent::query ($statement)); } } ?> 

Теперь в вашем коде создайте новый PDODebug, где вы создадите PDO, и выполняемые через него запросы будут регистрироваться. Если вы используете другой интерфейс базы данных OO (например, MySQLI), вы можете сделать что-то подобное.

Если вы используете не-OO-уровень доступа (например, функции mysql_ *), вам нужно будет вставить echo или var_dump или что-то еще перед каждым использованием функции mysql.