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

如何捕获CakePHP页面中运行的SQL查询?,php,cakephp,cakephp-1.2,Php,Cakephp,Cakephp 1.2,我有一个生产CakePHP站点,在那里我需要对缓慢的SQL查询进行故障排除。我想访问CakePHP创建的带有实际SQL查询、执行时间等的表,但我不能在生产站点上将调试级别设置为3 我想这是一个简单的问题,但我似乎不知道如何获取特定脚本的这些信息并对其进行处理,比如将其保存到日志文件中。这篇文章将对您有所帮助 如果您有权访问MySQL配置文件,您可以通过以下方式记录慢速查询。对于Cake 1.3(不确定这在1.2中是否有效),请查看/Cake/libs/view/elements/sql\u du

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

我想这是一个简单的问题,但我似乎不知道如何获取特定脚本的这些信息并对其进行处理,比如将其保存到日志文件中。

这篇文章将对您有所帮助

如果您有权访问MySQL配置文件,您可以通过以下方式记录慢速查询。

对于Cake 1.3(不确定这在1.2中是否有效),请查看
/Cake/libs/view/elements/sql\u dump.ctp
,并根据您的需要调整它:

$sources = ConnectionManager::sourceList();

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

    $log = $db->getLog();

    // examine $log...
}

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


好文章。我想避免查询日志太慢,但是哦,好吧。