Как вы перехватываете SQL-запросы, выполняющиеся на странице CakePHP? - PullRequest
2 голосов
/ 13 октября 2010

У меня есть рабочий сайт CakePHP, на котором мне нужно устранить неполадки медленного SQL-запроса. Я хочу получить доступ к этой великолепной таблице, которую CakePHP создает с фактическим запросом SQL, временем выполнения и т. Д., Но я не могу установить уровень DEBUG на 3 на рабочем сайте.

Я полагаю, что это просто, но я просто не могу понять, как я могу получить эту информацию для определенного сценария и что-то с ней сделать, например сохранить ее в файле журнала.

Ответы [ 3 ]

4 голосов
/ 13 октября 2010

Эта статья поможет вам.

Если у вас есть доступ к файлу конфигурации MySQL, вы можете регистрировать медленные запросы с помощью , включив настройку журнала медленных запросов .

2 голосов
/ 13 октября 2010

Для Cake 1.3 (не уверен, что это работает в 1.2), посмотрите на /cake/libs/view/elements/sql_dump.ctp и адаптируйте его под свои потребности:

$sources = ConnectionManager::sourceList();

foreach ($sources as $source) {
    $db =& ConnectionManager::getDataSource($source);
    if (!$db->isInterfaceSupported('getLog')) {
        continue;
    }

    $log = $db->getLog();

    // examine $log...
}
0 голосов
/ 11 марта 2015

DebugKit ваш друг.Должны быть версии, подходящие для Cake 1.3, 2.x и 3.x.Он имеет красивую панель инструментов, которая отображает все ваши запросы SQL и время, затраченное на их выполнение.

https://github.com/cakephp/debug_kit

...