Nó phụ thuộc vào cách bạn muốn kiểm tra chúng. Nếu bạn đang tìm kiếm cơ sở trên mỗi trang thì việc kích hoạt trình biên dịch sẽ ổn. Điều này cho thấy tất cả các truy vấn chạy trên tải trang đó cũng như thời gian thực hiện chúng. Xem liên kết bên dưới về hồ sơ.
http://codeigniter.com/user_guide/general/profiling.html
Nếu bạn đang muốn ghi lại tất cả các truy vấn khi chúng xảy ra và sau đó đọc tệp nhật ký sau đó, bạn sẽ phải mở rộng lớp cơ sở dữ liệu. Nếu đúng như vậy, hãy bình luận và tôi sẽ cập nhật / mở rộng câu trả lời của mình hơn nữa.
Mở rộng để ghi đè query()
Mở rộng MY_Loader.php trong / application / core / và chèn chức năng này vào
Cơ sở dữ liệu hàmfunction 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;
}
Sau đó, tạo /application/core/MY_DB_mysql_driver.php
Sau đó, bên trong đó bạn có thể ghi đè truy vấn ()
function query($sql, $binds = FALSE, $return_object = TRUE) {
// Do your stuff
return parent::query( $sql, $binds, $return_object );
}
Rõ ràng là thay thế mysql trong tên tệp thành bất kỳ trình điều khiển cơ sở dữ liệu nào bạn đang sử dụng / đang cố gắng mở rộng.
Điều này cũng sẽ hoạt động với Active Record vì tất cả get()
các phương thức gọi theo query()
từ trình điều khiển để chạy các truy vấn của họ.