如何捕获CakePHP页面中运行的SQL查询?

时间:2010-10-12 21:49:07

标签: php cakephp cakephp-1.2

我有一个生产CakePHP站点,我需要对慢速SQL查询进行故障排除。我想访问CakePHP用实际的SQL查询,执行时间等创建的那个伟大的表,但我不能在生产站点上将DEBUG级别设置为3。

我想这很简单,但我似乎无法弄清楚如何为特定脚本获取此信息并对其执行某些操作,例如将其保存到日志文件中。

3 个答案:

答案 0 :(得分:4)

This文章会对您有所帮助。

如果您有权访问MySQL配置文件,则可以通过enabling log-slow-queries setting记录慢查询。

答案 1 :(得分:2)

对于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...
}

答案 2 :(得分:0)

DebugKit 是你的朋友。应该有适合Cake 1.3,2.x和3.x的版本。它有一个漂亮的工具栏,可以显示所有SQL查询以及运行每个查询所需的时间。

https://github.com/cakephp/debug_kit