Я регулярно сталкиваюсь со следующей ситуацией; Я работаю над существующей системой, созданной на PHP, которая что-то делает, на самом деле довольно много, и обычно она состоит из большого количества кода. Теперь мне нужно расширить некоторые функции, отладить что-то и узнать, как система взаимодействует с MySQL-DB. Какие запросы выполняются в каком порядке.Как перехватывать DB-запросы? (MySQL)
Как перехватить все запросы? Что-то вроде xdebug_start_trace для базы данных.
EDIT: Централизованная обработка запросов БД отсутствует. Вы найдете там все виды запросов. Поэтому мой вопрос направлен на некоторые функции каротажа. В принципе, это должно существовать, поскольку здравый смысл заключается в том, что что-то подобное может быть полезно.
EDIT2: Марио предложило решение, которое зависит от перезапуска mysql-deamon ... no. Дополнительные предложения?
Есть ли один класс, который обрабатывает все подключения к базе данных MySQL? –
Я сомневаюсь, что это можно сделать по устаревшему коду, используя необработанные функции API. –
Если существующий код использует mysql_query() напрямую, то последним вариантом было бы попробовать runkit_function_rename() и определить функцию-оболочку, которая перехватывает все вызовы. Или еще худшая альтернатива: запустите сокет через netcat | tee | netcat или используйте сетевой сниффер. – mario