2010-10-12 30 views
2

我有一个生产CakePHP站点,我需要解决一个缓慢的SQL查询。我想访问CakePHP用实际的SQL查询,执行时间等创建的伟大的表,但是我无法将生产站点上的DEBUG级别设置为3。如何捕获在CakePHP页面中运行的SQL查询?

我想这是一个简单的,但我似乎无法弄清楚如何我可以得到这个信息的特定脚本和做一些事情,就像将其保存到日志文件。

回答

2

蛋糕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

谢谢,我现在在1.2,但最终会移动。 – Justin 2010-10-14 13:37:58

0

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

https://github.com/cakephp/debug_kit