среда, 29 июня 2011 г.

Yii. Настройка логирования SQL запросов

В этой статье я расскажу как можно вывести в дебаг SQL которые генерит фреймворк Yii.

Все изменения будут производится в главном конфиге,  который находиться тут: /protected/config/main.php
Найдем в нем строчку
'components' => array(
Наша основная задача - настроить компонент логирования и компонет работы с БД, укажем параметры компоненту log и допишем параметры компоненту db:
'components' => array(
   'db' => array(
      ..., 
      'enableProfiling' => true,
      'enableParamLogging' => true
    ),
    'log' => array(
      'class' => 'CLogRouter',
      'routes' => array(
         'db' => array(
         'class' => 'CWebLogRoute',
         'categories' => 'system.db.CDbCommand',
         'showInFireBug' => true //Показывать в FireBug или внизу каждой страницы
       )
    ),
    ...
)
Теперь в любом месте кода, например в каком-то контроллере нужно указать какой блок кода профилировать. В следующем примере выведутся те запросы которые генерит фреймворк для кода замкнутого в блок профилирования:
   Yii::beginProfile('blockId');
   $users = Users::model()->findAll("id>2");
   Yii::endProfile('blockId');

3 комментария:

  1. Не забудьте в index.php зарегистрировать дебаг режим
    defined('YII_DEBUG') or define('YII_DEBUG',true);
    до вызова Yii::createWebApplication

    ОтветитьУдалить
  2. Добавлю - сегодня искал, как включить дебаг только для определенных IP\Cookie.
    Пришлось свое писать - http://brainfucklab.blogspot.com/2012/11/php-yii-cweblogrouter-cookie-ip.html (не пиара ради).

    ОтветитьУдалить
  3. По SQL Бояров крутые уроки даёт - https://www.youtube.com/playlist?list=PLvItDmb0sZw_NDm3pDMQ4_9bV_zKzBmNv

    ОтветитьУдалить