CakePHP跟踪消耗资源查询
CakePHP track consuming resources query
我需要跟踪在我的 CakePHP 2.5.2 应用程序中执行此查询的位置(由 DebugKit 报告):
SELECT COUNT(*) AS count FROM sometable WHERE status = 1
我找到了引用table的模型,也许其他地方也引用了。
除了查找模型或运行每个可能的PHP脚本之外,是否有更好的方法来查找此查询在我的 CakePHP 应用程序中的来源?
您可以扩展 Mysql
class 并覆盖 logQuery()
以便它使用您选择的日志记录机制记录每个请求。
示例:
创建文件 /app/Model/Datasource/MysqlLog.php
并添加以下内容:
App::uses('Mysql', 'Model/Datasource/Database');
class MysqlLog extends Mysql {
function logQuery($sql, $params = []) {
parent::logQuery($sql);
Debugger::log("sql[{$this->_queriesCnt}]: $sql");
}
}
通过修改您的 /app/Config/database.php
:
来指示 CakePHP 使用新的 class
public $default = array(
'datasource' => 'Database/MysqlLog',
'persistent' => true,
'host' => 'localhost',
'login' => 'my_login',
'password' => 'my_pass',
'database' => 'my_db',
);
请求将记录到 /app/tmp/logs/debug.log
。
基于 Vladimir Bilyov 的 post Logging sql queries into file in CakePHP 2。
我需要跟踪在我的 CakePHP 2.5.2 应用程序中执行此查询的位置(由 DebugKit 报告):
SELECT COUNT(*) AS count FROM sometable WHERE status = 1
我找到了引用table的模型,也许其他地方也引用了。
除了查找模型或运行每个可能的PHP脚本之外,是否有更好的方法来查找此查询在我的 CakePHP 应用程序中的来源?
您可以扩展 Mysql
class 并覆盖 logQuery()
以便它使用您选择的日志记录机制记录每个请求。
示例:
创建文件
/app/Model/Datasource/MysqlLog.php
并添加以下内容:App::uses('Mysql', 'Model/Datasource/Database'); class MysqlLog extends Mysql { function logQuery($sql, $params = []) { parent::logQuery($sql); Debugger::log("sql[{$this->_queriesCnt}]: $sql"); } }
通过修改您的
来指示 CakePHP 使用新的 class/app/Config/database.php
:public $default = array( 'datasource' => 'Database/MysqlLog', 'persistent' => true, 'host' => 'localhost', 'login' => 'my_login', 'password' => 'my_pass', 'database' => 'my_db', );
请求将记录到 /app/tmp/logs/debug.log
。
基于 Vladimir Bilyov 的 post Logging sql queries into file in CakePHP 2。