我有一个生产 CakePHP 站点,我需要在其中对慢速 SQL 查询进行故障排除。我想访问 CakePHP 使用实际 SQL 查询、执行时间等创建的出色表,但我无法在生产站点上将 DEBUG 级别设置为 3。
我想这很简单,但我似乎无法弄清楚如何获取特定脚本的此信息并对其进行处理,例如将其保存到日志文件中。
我有一个生产 CakePHP 站点,我需要在其中对慢速 SQL 查询进行故障排除。我想访问 CakePHP 使用实际 SQL 查询、执行时间等创建的出色表,但我无法在生产站点上将 DEBUG 级别设置为 3。
我想这很简单,但我似乎无法弄清楚如何获取特定脚本的此信息并对其进行处理,例如将其保存到日志文件中。
这篇文章会帮助你。
如果您有权访问 MySQL 配置文件,则可以通过启用 log-slow-queries 设置来记录慢查询。
对于 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 查询以及运行每个查询所花费的时间。