繁体   English   中英

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

[英]How do you capture the SQL queries running in a CakePHP page?

我有一个生产型CakePHP网站,需要对缓慢的SQL查询进行故障排除。 我想使用实际的SQL查询,执行时间等访问CakePHP创建的出色表,但是我无法在生产站点上将DEBUG级别设置为3。

我以为这很简单,但是我似乎无法弄清楚如何获取特定脚本的信息并对其进行处理,例如将其保存到日志文件中。

文章将帮助你。

如果您有权访问MySQL配置文件,则可以通过启用log-slow-query设置来记录慢查询。

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

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

https://github.com/cakephp/debug_kit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM