CodeIgniter. Как посмотреть выполненные sql-запросы.
25 Мар 2010
Очень просто!
Если быть кратким, то:
1 2 3 4 5 6 7 8 |
//выполненные запросы: print_r($this->db->queries); //время выполнения запросов: print_r($this->db->query_times); |
А далее можно использовать эти массивы как необходимо. Сделать временные print_r() для отладки или оформить красивый вывод результатов в админ. части сайта.
Обратите внимание, что данные массивы будут пусты, если
1 2 3 4 5 |
$this->db->save_queries = FALSE; //(по умолчанию TRUE) |
Информацию почерпнул из файла codeigniter\system\database\DB_driver.php
В файле описывается класс драйвера базы данных CI_DB_driver. В этом классе и объявлены, интересующие нас переменные (массивы).
1 2 3 4 5 6 7 8 9 10 |
class CI_DB_driver { … var $queries = array(); var $query_times = array(); … } |
Далее идет наследование (или расширение) это класса другими классами CI_DB и CI_DB_active_record, CI_DB_mysql_driver…
А в файле DB.php происходит создание объекта класса.
1 2 3 4 5 6 |
$driver = 'CI_DB_'.$params['dbdriver'].'_driver'; $DB =& new $driver($params); |
Если вы работаете с MySQL, то будет создан объект класса CI_DB_mysql_driver.
Да, для новичка в CI будет ценной инфой.
Спасибо автору, а то $this->output->enable_profiler(TRUE); для моих нужд слишком громоздкий, а этот вариант в самый раз.
А вам спасибо за $this->output->enable_profiler(TRUE);
Автору респект, не знал такого способа. Красиво представить на этапе отладки sql-запросы и время, затраченное на выполнение можно с помощью библиотеки profiler.
Достаточно в начале контоллёра указать $this->output->enable_profiler(TRUE);