这取决于您想如何审核它们。如果您正在寻找每页的基础,那么启用分析器就可以了。这显示了该页面加载上运行的所有查询以及执行它们所需的时间。请参阅下面有关分析器的链接。
http://codeigniter.com/user_guide/general/profiling.html http://codeigniter.com/user_guide/general/profiling.html
如果您希望记录所有发生的查询,然后稍后读取日志文件,则必须扩展数据库类。如果是这种情况,请发表评论,我将进一步更新/扩展我的答案。
扩展至覆盖query()
扩展 /application/core/ 中的 MY_Loader.php 并插入此函数
function database($params = '', $return = FALSE, $active_record = NULL)
{
// Grab the super object
$CI =& get_instance();
// Do we even need to load the database class?
if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db)) {
return FALSE;
}
require_once(BASEPATH.'database/DB'.EXT);
// Load the DB class
$db =& DB($params, $active_record);
$my_driver = config_item('subclass_prefix').'DB_'.$db->dbdriver.'_driver';
$my_driver_file = APPPATH.'core/'.$my_driver.EXT;
if (file_exists($my_driver_file)) {
require_once($my_driver_file);
$db = new $my_driver(get_object_vars($db));
}
if ($return === TRUE) {
return $db;
}
// Initialize the db variable. Needed to prevent
// reference errors with some configurations
$CI->db = '';
$CI->db = $db;
}
然后创建/application/core/MY_DB_mysql_driver.php
然后在里面你可以覆盖 query()
function query($sql, $binds = FALSE, $return_object = TRUE) {
// Do your stuff
return parent::query( $sql, $binds, $return_object );
}
显然,将文件名中的 mysql 替换为您正在使用/尝试扩展的任何数据库驱动程序。
这也适用于 Active Record,因为所有get()
方法调用query()
从驱动程序运行他们的查询。