Добавляем простую статистику производительности на сайт

Иногда на сайте необходимо выводить статистику производительности, конечно выводить SQL запросы и время потраченное на их выполнение на всеобщее обозрение не стоит. :). Но вот время выполнения скрипта и кол-во потраченной памяти даст достаточно информации для нахождения узких мест в системе.

В Yii есть замечательная штука журналирование при помощи которой можно делать профилирование. Для того что бы подключить журналирование необходимо добавить следующий код в наш файл конфигураци /config/main.php:

1
2
3
4
5
6
7
8
return array(
'preload' => array('log'),
'components' => array(
'log' => array(
'class' => 'CLogRouter',
),
),
);

Здесь мы добавили компонент приложения CLogRouter и указали системе что он будет загружаться заранее (по умолчанию все компоненты загружаются по требованию) при помощи св-ва preload. Теперь все готово для того что бы вывести статистику производительности. Добавим нижеследующий код в наш макет (layout):

1
2
Время выполнения: <?php echo round(Yii::getLogger()->executionTime, 3); ?> сек.
Использовано памяти: <?php echo round(Yii::getLogger()->memoryUsage/1024/1024, 3); ?> Мб.

Теперь мы вывели статистику производительности: время работы скрипта и кол-во затраченной память при работе скрипта. Т.к метод memoryUsage возвращает значение в байтах то мы пересчитываем его в нужные нам Мб.

Вообще режим профилирования лучше использовать только когда это нужно, допустим при отладке, а в остальных случаях лучше его отключить.