どのように監査するかによって異なります。ページ単位で検索する場合は、プロファイラを有効にしても問題ありません。これは、そのページのロードで実行されるすべてのクエリと、それらを実行するのにかかる時間を示します。プロファイラの下のリンクを参照してください。
http://codeigniter.com/user_guide/general/profiling.html
あなたは、彼らが起こると、後でログファイルを読み込むと、クエリのすべてのログを記録するために探している場合は、データベースクラスを拡張する必要があります。このような場合は、コメントと私はさらに答えを更新/拡張します。 query()
は、次に、その内部次に/application/core/MY_DB_mysql_driver.php
を作成/アプリケーション/コアで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;
}
この関数を挿入上書きする拡張
クエリを上書きすることができます。
function query($sql, $binds = FALSE, $return_object = TRUE) {
// Do your stuff
return parent::query($sql, $binds, $return_object);
}
明示的にファイル名のmysqlを、使用している/拡張しようとしているデータベースドライバに置き換えてください。
get()
のすべてのメソッドは、ドライバからクエリを実行するためにドライバからquery()
を呼び出すため、これはアクティブレコードでも機能します。
サーバにアクセスできる場合は、MySQLの組み込み[クエリロギング](http://dev.mysql.com/doc/refman/5.1/en/query-log.html)を使用できます。 –
ロケット、良いアイデア。しかし、将来、MS SQLまたはOracleに切り替える可能性があります。私は、PHPベースのソリューションを探しています。 – jjwdesign
ああ、大丈夫です。ちょっとしたアイデア:-) –