Большинство PHP фреймворков используют единый интерфейс подключения - своего рода оболочку - который позволяет регистрировать все запросы через этот интерфейс.
Если такого не существует, другой подход будет включать регистрацию на MySQL -уровень. Но для некоторых, вероятно, le git, причина, по которой вы тоже не хотите этого делать. Если вы хотите предотвратить простои, вы можете включить ведение журнала запросов без перезапуска сервера MySQL.
Если ни одно из вышеперечисленных решений не возможно, вам нужно запачкать руки :-)
Одним из способов может быть добавление собственной регистрации в коде PHP. Запись новых строк в файл не является проблемой производительности, если вы записываете в конец файла .
Я не уверен, как вы запрашиваете базу данных, но если вы ..
A) ..use процедурные функции mysqli
Если вы используете процедурные функции mysqli, такие как mysqli_query (), для вызова базы данных, вы можете создать собственную глобальную пользовательскую функцию, которая записывает в файл журнала и затем вызывает реальную функцию.
Пример:
Добавьте новую глобальную функцию:
function _mysqli_query($link, $query, $resultmode = MYSQLI_STORE_RESULT )
{
// write new line to end of log-file
file_put_contents('queries.log', $query . "\n", FILE_APPEND);
// call real mysqli_query
return mysqli_query($link, $query, $resultmode);
}
Выполните поиск по всему проекту и замените mysqli_query ( на _mysqli_query (.
). Затем строка, подобная этой:
$result = mysqli_query($conn, 'select * from users');
будет выглядеть так после поиска и замены :
$result = _mysqli_query($conn, 'select * from users');
B) ..use класс mysqli (объектно-ориентированный стиль)
Если вы используете объектно-ориентированный стиль путем создания экземпляра класса mysqli с последующим вызовом методы запроса, например $ mysqli-> query ("select * from users"), подход может быть создайте свой собственный класс базы данных, который расширяет класс mysqli, и внутри указанных методов c (например, функции запроса) вы добавляете запись в журнал, как в приведенном выше примере.
В очень рекомендуемой книге "Высокая производительность MySQL "от O'Reilly они go через примеры кода, как это сделать и добавить дополнительную отладочную информацию (хронометраж et c.). Некоторые страницы доступны в книгах Google .
В общем
Я хотел бы рассмотреть возможность использования этого как возможности для рефакторинга некоторой кодовой базы в лучшую сторону.
Если вы написали автоматизированные тесты, это хороший способ убедиться, что рефакторинг ничего не сломал.
Если вы не практикуете автоматическое тестирование, вы должны протестировать все приложение вручную.
Вы сказали, что боитесь, что проблемы с производительностью возникают из-за дублирующих запросов к базе данных, что вполне может иметь место. В большинстве случаев я нахожу, что отсутствуют индексы или необходимость переписывать отдельные запросы.
Схема производительности в MySQL может помочь вам отладить эти вещи, если вы обнаружите, что c действительно, что это может быть другие причины проблем с производительностью.