Es hängt davon ab, wie Sie sie prüfen möchten. Wenn Sie nach einer Basis pro Seite suchen, ist die Aktivierung des Profilers in Ordnung. Dies zeigt alle Abfragen, die beim Laden dieser Seite ausgeführt werden, sowie die Zeit, die für ihre Ausführung benötigt wird. Siehe den Link unten auf dem Profiler.
http://codeigniter.com/user_guide/general/profiling.html
Wenn Sie alle Abfragen sofort protokollieren und die Protokolldatei später lesen möchten, müssen Sie die Datenbankklasse erweitern. Wenn dies der Fall ist, kommentieren Sie und ich werde meine Antwort weiter aktualisieren/erweitern.
Erweitern um query()
zu überschreiben
Erweitern Sie MY_Loader.php in /application/core/ und fügen Sie diese Funktion ein
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;
}
Erstellen Sie dann /application/core/MY_DB_mysql_driver.php
Darin können Sie dann query()
überschreibenfunction query($sql, $binds = FALSE, $return_object = TRUE) {
// Do your stuff
return parent::query( $sql, $binds, $return_object );
}
Ersetzen Sie offensichtlich mysql im Dateinamen durch den Datenbanktreiber, den Sie verwenden/versuchen zu erweitern.
Dies funktioniert auch mit Active Record als dem gesamten get()
Methoden rufen query()
auf vom Treiber, um ihre Abfragen auszuführen.