Catalyst::Stats

Catalyst::Stats — класс Catalyst, работа со статистикой, измерение времени выполнения отдельных экшенов.

Модуль Catalyst::Stats используется по-умолчанию, для вывода информации в логе Сatalyst-приложения. Если вы хотите заменить стандартный модуль чем-то своим, понадобится внести изменения в конфиг MyApp.pm:

Кроме того, ваш модуль должен будет реализовать те же самые методы, что и Catalyst::Stats.

 

Синтаксис

Catalyst использует Catalyst::Stats чтобы информировать вас о времени выполнения экшенов. Вы можете добавить собственные контрольные точки в код приложения, для более подробной отчетности и контроля.

Пример:

Информация в логе при обращении по адресу http://localhost:3000/support до внесения изменений в код экшена, стандартный вывод:

Теперь добавим в код экшена вызов метода profile():

Catalyst::Stats — используется Catalyst-приложением по умолчанию, поэтому, добавляя дополнительные инструкции в экшен, нет необходимости указывать в начале файла код подключения модуля, или дополнительные параметры конфигурации, или т.п.

Данные в логе после внесения изменений и выполнения запроса к странице http://localhost:3000/support :

 

Методы Catalyst::Stats

new

Создает новый объект Catalyst::Stats.

enable

Отключает или включает вывод статистики. По умолчанию обычно включен. Т.е. если вы добавите в код $stats->enable(0) :

То вся статистика с момента отработки этого кода, перестанет выводиться:

profile

Устанавливает контрольные точки для профайлинга. Можно использовать в паре begin/end, и тогда он будет измерять время выполнения от того места, где установлен begin. Либо можно устанавливать контрольные точки без begin/end, и тогда в статистике будет выводиться время, прошедшее с момента последнего вывода статистики в лог (либо это был вывод связанный с началом текущего экшена, либо предыдущей контрольной точки).

Следующие аргументы — ключ/значение могут использоваться в методе profile():

  • begin => ACTION — Помечает начало контрольного блока. Этот блок в статистике будет отмечен как отдельный «подраздел».
  • end => ACTION — Помечает конец контрольного блока. Используется в паре с меткой begin.
  • comment => COMMENT — Помечает очередную контрольную точку и выводит ее в статистике с указанным комментарием. Выражение

    идентично
  • uid => UID — Устанавливает предопределенный уникальный ID. Может оказаться полезным, для случаях сложной логики профилирования.
  • parent => UID — Связь контрольной точки с ранее установленным ID.

created

Возвращает время создания объекта, в gettimeofday формате, в секундах и микросекундах.

elapsed

Возвращает время, которое прошло с момента создания объекта Catalyst::Stats, в секундах.

report

Метод при вызове в скалярном контексте возвращает текстовый отчет. По сути, это те же данные, какие выводятся в конце выполнения каждого запроса в логе, но в данном случае, в отчете содержатся данные только по тем экшенам и контрольным точкам, которые успели выполниться до того момента, когда был вызван метод report():

При вызове в контексте массива, метод возвращает сложную структуру данных. Каждая строка структуры содержит данные:

Результат выполнения данного кода:

 

Совместимые методы

Некоторые компоненты ожидают, что для работой со статистикой используется не Catalyst::Stats, а Tree::Simple, и они рассчитывают, что будут обращаться к объекту Tree::Simple. Для совместимости в Catalyst::Stats добавлены методы:

  • accept
  • addChild
  • setNodeValue
  • getNodeValue
  • traverse