Как стать автором
Обновить

Модуль профайлинга «ProfilerToolbar»

Kohana
Если вы используете Kohana, то скорее всего уже видели модуль DebugToolbar. Испробовав его на нескольких проектах, стало понятно, что его возможностей явно не хватает. А при использовании Ajax запросов данный модуль становиться вообще бесполезным.

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

ProfilerToolbar


В данном модуле очень хотелось видеть не просто SQL запросы, а еще их EXPLAIN информацию.

ProfilerToolbar Tab: SQL Queries

Так же хотелось следить за работой с кешем.

ProfilerToolbar Tab: Cache

Видеть данные о текущем роуте и его параметрах.

ProfilerToolbar Tab: Route

Часто приходится просматривать сложные структуры данных используя var_dump(); и не портить код самой страницы.

ProfilerToolbar Tab: Your

Плюс к вышеперечисленному, выводятся глобальные переменные ($_GET,$_POST,$_SESSION и т.д.) и список поключаемых в проекте файлов, но там ничего интересного нет и дабы не засорять статью лишними скриншотами просто оставлю ссылку на страницу данного модуля.


Всё конечно хорошо, но как быть с Ajax запросами?

Для этого имеется вывод всё тех же данных в FireBug и выглядит это следующим образом.


Посмотреть развёрнутые группы


Установка модуля


Как и всегда, в файле bootstrap.php надо просто добавить строчку в список модулей с указанием каталога где он расположен. Но есть один ньюанс. Что бы получить дополнительную информацию о работе с кешем и о запросах к БД, мне пришлось переопределить их классы.
Поэтому, что бы использовались классы модуля, он должен располагаться перед строками Cache и Database.

Kohana::modules(array(
    ...
    'profilertoolbar' => MODPATH.'profilertoolbar',
    'cache'           => MODPATH.'cache',
    'database'        => MODPATH.'database',
    ...
  ));


Как пользоваться


Вывод панели на страницу

Что бы вывести панель, надо в шаблоне нужной вам страницы написать: ProfilerToolbar::render(true);
Я это делаю в основном шаблоне который выводится везде.

<html>
<body>
  ...
  content
  ...
  <?php ProfilerToolbar::render(true); ?>
</body>
</html>

Вывод данных в FireBug

После подключения модуля, данные в FireBug будут выводиться автоматически во всех методах любых контроллеров. Если вас это не устраевает и требуется просматривать данные только в определённых местах, то делаем следующим образом:
1. Отключам в конфиге параметр showEverywhere

  ...
  // firebug data settings
  'firebug'=>array(
    'enabled'         => true, // if set FALSE, panel don't ...
    'showEverywhere'  => FALSE, // if set TRUE you don't need ...
  ...


2. В нужном методе пишем ProfilerToolbar::firebug();
Или в контроллере который отвечает за Ajax:

  class Controller_Ajax extends Controller {
     public function after(){
      ...
      ProfilerToolbar::firebug();
      parent::after();
    }
    ...
  }


Добавление своих данных

Если вам нужно просмотреть дамп какой-то переменной, то выводить её следует так:
  ProfilerToolbar::addData('first tab','test string');
  ProfilerToolbar::addData('first tab',rand(1, 1000)/ rand(1, 1000));
  ProfilerToolbar::addData('first tab',$user);
  ProfilerToolbar::addData('first tab',$this->request->headers());
  ProfilerToolbar::addData('second tab','other data');

Получим результат как на данном скриншоте.

Конфиг


Что бы не приводить сюда листинг, можете посмотреть тут.
В нём можно отключить как вывод самой панели так и вывод данных в FireBug, ну и всех параметров в отдельности.
Например, изредка требуется посмотреть какие файлы подключаются в процессе выполнения скрипта, но как правило это не нужно и можно отключить параметр showIncFiles что значительно сократит генерируемый html код.

Не забудьте в конфиге database включить profiling, в противном случае запросы отображаться не будут.

Развитие


Если модуль будет востребован, то заморочусь оформлением кода по стилю Kohana и штатным userguide.
По функционалу планирую сделать отображение логов и надеюсь вы подкинете новых идей :)

Заключение


Страница модуля и демо: alertdevelop.ru/projects/profilertoolbar
Проект на гитхабе: github.com/Alert/profilertoolbar

p.s. На демо странице отображается только панель со статической информацией без инфы в FireBug.

Жду жёсткой критики :)
Теги:KohanaProfilerToolbarпрофайлингDebugToolbarвелосипедостроение
Хабы: Kohana
Всего голосов 45: ↑43 и ↓2 +41
Просмотры3.4K

Похожие публикации

Факультет разработки игр
16 июня 2021180 000 ₽GeekBrains
Профессия Data Science
16 июня 2021114 000 ₽SkillFactory
Факультет веб-разработки
16 июня 2021270 000 ₽GeekBrains
Полный курс по Data Science
16 июня 2021114 000 ₽SkillFactory
Профессия Веб-разработчик
16 июня 202166 000 ₽SkillFactory

Лучшие публикации за сутки