Зависи как искате да ги одитирате. Ако търсите база за страница, тогава активирането на профайлъра ще бъде добре. Това показва всички заявки, изпълнявани при зареждане на тази страница, както и времето, необходимо за тяхното изпълнение. Вижте връзката по-долу на профила.
http://codeigniter.com/user_guide/general/profiling.html
Ако искате да регистрирате всички заявки, както се случват, и след това да прочетете регистрационния файл по-късно, ще трябва да разширите класа на базата данни. Ако случаят е такъв, коментирайте и аз ще актуализирам/разширя отговора си допълнително.
Разширяване за презаписване на query()
Разширете MY_Loader.php в /application/core/ и вмъкнете тази функция
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()
от драйвера, за да изпълняват своите заявки.