Класс расширенной отладки для InstantCMS 2.0.1 (v.6) - UPD 2014.07.05 18:15

+23
2.9K
Мощный, но лёгкий класс расширенной отладки для InstantCMS 2.0. Обновлённая версия с новым функционалом. В ответ на просьбы к разработчикам CMS на форуме – теперь также собирается и выводится информация о событиях/хуках и виджетах!

Данная отладка будет полезна как при тестировании и оптимизации самой CMS, так и разработчикам компонентов. А так же всем пользователям CMS для выявления проблем при размещении сайтов на реальных серверах, где невозможно использовать встроенную в IDE систему отладки.
Например, с её помощью прямо на реальном работающем или на локальном тестовом сайте можно увидеть «тяжёлые» или ошибочные запросы, повторяющиеся подключения файлов, неоптимизированные участки кода, «задумчивые» хуки и виджеты и т.д. Можно быстрее понять какой из добавленных на сайт компонентов тормозит генерацию страниц и почему. Администраторы прямо из админки увидят «тонкие места» сервера – что именно вызывает тормоза: процессор, диски или база данных; смогут оптимальнее подобрать объём ОЗУ для php и т.п. Программисты смогут точнее понять работу CMS, посмотрев на неё «изнутри» и быстрее, нагляднее отладить свои компоненты или шаблоны.

Краткий список возможностей:
--------
• Расширенная информация о времени работы CMS и её частей/операций
• Лог автозагрузок классов и инклудов файлов и суммарная таблица инклудов.
• Лог обращений к БД (SQL-запросов и коннектов).
• Лог работы с кэшем.
• Фильтры для логов операций – позволяют выводить только интересующую информацию.
• Информация об ошибках, о входных данных и результатах работы отслеживаемых операций в логах.
• Контрольные точки в коде для получения подробной информации о php-скриптах.
• Информация о памяти скрипта (суммарная и в контрольных точках).
• Настраиваемые логи отладки выводятся под подвалом страницы, не изменяя саму страницу.
• Управление параметрами отладки производится через новую вкладку «Отладка» в админке.
• При отключении отладки она практически не влияет на скорость работы CMS.
• Цветовое оформление логов и другой информации сделано через отдельный css-файл.
• Текстовые строки из настроек в админке вынесены в языковые файлы.

В этой версии добавил:
--------
+ Лог и суммарные таблицы событий и хуков.
+ Лог и суммарная таблица виджетов.
+ Подсчитывается время работы контроллера (полезно для создателей компонентов).
+ Подсчитывается время рендеринга шаблона (пригодится разработчикам шаблонов).
+ В админке показывается предупреждение-напоминание о включённой отладке.
+ Наглядный список текущих параметров отладки в "Панели управления".
+ Оптимизация загрузки манифестов.

Также в эту версию включены мои предыдущие оптимизации «Двойки», то есть работа CMS ускорена более, чем в полтора раза (смотрите более ранние записи в моём блоге).

Иллюстрация

В данной версии я реализовал всё свои основные «хотелки» по возможностям отладки и даже больше. На мой взгляд, текущего функционала вполне достаточно как для изучения работы CMS (я изучаю её по логам операций, по точкам отладки с выводом разных переменных в интересующих меня местах кода и по трассировке их вызовов), так и для реальной работы с системой (программирование, отладка системы и компонентов, контроль работы сайта на реальном хостинге). Однако, если у вас будут обоснованные предложения по развитию возможностей отладки, я постараюсь со временем их добавить. Также с благодарностью принимаются все ваши замечания об ошибках и возможных недоработках в текущей версии класса.

Я планирую встраивать этот класс во все свои будущие сайты. Поскольку скорее всего я буду использовать свой патченый под себя вариант ядра, то встраивать отладку дважды в каждое новое обновление системы (в свою версию и в официальную), делать отдельный архив изменённых файлов официального пакета и описание для размещения в блог — будет накладно, то я не могу гарантировать своевременное включение отладки в обновления CMS. Хотя на первых порах постараюсь, конечно. Да и пользователям, которые уже внесли свои правки в файлы CMS, такой вариант будет неудобен.

Поэтому, если вам понравилась эта отладка настолько, что вы дружно захотите иметь её на своих сайтах «из коробки» без дополнительных ручных манипуляций, захотите обновлять ядро ваших сайтов централизовано из депозитария Инстанта и при этом сохранять возможность отладки, и уважаемый r2 посчитает возможным включить её в код следующей версии InstantCMS 2.0, я готов предоставить разработчикам описание по встраиванию класса в Инстант. Или могу самостоятельно встроить её в замороженный на небольшое время текущий код нового дистрибутива. С учётом любых требований разработчиков, естественно. А до этого момента хорошо бы с вашей помощью выявить и исправить все возможные ошибки класса отладки.


Скачать класс отладки можно тут

Достаточно просто распаковать содержимое архива с заменой файлов в папку с уже установленной системой. Как и предыдущая версия, эта подходит для InstantCMS 2.0.0-2.0.1. Также можно накатывать этот архив целиком на уже установленную пятую версию отладки.

В конфиге по-умолчанию отладка уже включена (смотрите новый раздел "Отладка" в "Настройках" админки). Если отладочная информация на сайте не показывается, убедитесь, что вы зашли под админом или выключите параметр «Показывать отладочную информацию только администраторам».

Суммарный список изменённых файлов исходной версии InstantCMS 2.0 на отладку v.6:
\index.php
\system\config\autoload.php
\system\controllers\admin\frontend.php
\system\controllers\admin\actions\install_finish.php
\system\controllers\admin\actions\settings.php
\system\controllers\typograph\hooks\html_filter.php
\system\core\cache.php
\system\core\config.php
\system\core\controller.php
\system\core\core.php
\system\core\database.php
\system\core\eventsmanager.php
\system\core\form.php
\system\core\template.php
\system\core\mailer.php
\system\core\model.php
\system\languages\en\controllers\admin\admin.php
\system\languages\ru\controllers\admin\admin.php
\templates\default\admin.tpl.php
\templates\default\main.tpl.php
Файлы класса отладки (добавленные к оригинальной InstantCMS 2.0):
\system\config\debug.php
\system\controllers\admin\actions\settings_debug.php
\system\controllers\admin\forms\form_debug.php
\system\core\debug.php
\system\core\debugconfig.php
\templates\default\controllers\admin\settings_debug.tpl.php
\templates\default\css\debug.css
Если вы уже изменяли для себя какие-то из этих файлов, то сделайте сравнение моих версий с оригинальными файлами и внесите изменения в свои файлы вручную.

Также вы можете скачать:

Полное описание возможностей класса отладки (html-файл в архиве)

Подробное описание настроек отладки в админке и использование точек остановки (html-файл в архиве)

UPD 2014.07.05 18:15
Прошу прощения, забыл внести оптимизацию ещё в несколько файлов. Теперь всё на месте.

Походу ещё добавил вывод в лог не только данных виджетов, а и возвращаемых ими результатов.
А также в выводе логов точек отладки добавил информацию о количестве и времени обработанных с момента последней КТ хуках.

Архив перезалил. Скачайте заново по обновлённой ссылке.

Изменения в файлах:
\system\core\config.php
\system\core\core.php
\system\core\debug.php
\system\core\mailer.php
\system\core\model.php
\system\controllers\typograph\hooks\html_filter.php
\system\languages\en\controllers\admin\admin.php
\system\languages\ru\controllers\admin\admin.php
0
Loadырь Loadырь 10 лет назад #
Спасибо, очень даже вовремя!
0
Скорпион Скорпион 10 лет назад #
Круть.....как это я пропустил Ваш блог?
-1
Dublic Dublic 10 лет назад #
Молодец! А почему на Github не выложишь?
Может разработчики ICMS v.2 все таки включат это полезное дополнение в официальную сборку?
0
WebMan WebMan 10 лет назад #
Зачем на Github? Чем и кому удобнее?
1. Это не отдельный модуль, а серьёзный, комплексный хак системы. Он глубоко встраивается в ядро. Какой смысл публиковать его отдельно от темы Инстанта?
2. В этом блоге информация о нём сразу видна заинтересованным пользователям, не нужно ничего искать на стороннем сайте. Тут же есть и все исходники, я ничего не скрываю.
3. Выкладывать на Github список всех изменений, которые делаются в ядре, да ещё и для каждой версии - лишняя работа. Никто им пользоваться не будет, все предпочтут иметь отладку в официальных сборках или, в крайнем случае, будут ждать готовое решение от меня для очередного обновления Инстанта.
А вот включат ли разработчики эти возможности в официальную версию - зависит от их видения CMS и от ваших пожеланий.
0
NeBox NeBox 10 лет назад #
Удобнее тем, что любые изменения легко вытаскивать, не сравнивая файлы.
Всегда можно внести коррективы и т.д...
У меня на гитхабе куча проектов, которые легко мониторить. А лазить по сайтам в поисках обновления...

Вы нашли ошибку в коде, на гитхабе сделали коммит и все. А тут придется выкладывать архив, людям вытаскивать эти изменения...
Для чего такой геморрой то? уже почти все движки\модули\плагины имеют репозитории, ибо удобно работать. а тут все архивами выкладывается...
0
WebMan WebMan 10 лет назад #
Давайте дождёмся ответов разработчиков. Тогда будет видно куда идти и если нужно будет, тогда я подумаю про Гитхаб. Может и не придётся ничего никуда отдельно выкладывать, всё будет встроено в движок.
0
NeBox NeBox 10 лет назад #
Спасибо.
Почему действительно на гитхаб не выложите? Удобнее же было бы.
0
Скорпион Скорпион 10 лет назад #
А можно отдельно получить файлы "оптимизации" и файлы для "класса отладки"?
Если конечно это не сложно.
0
WebMan WebMan 10 лет назад #
Подробное описание двух оптимизаций есть в моём блоге.
Отдельно файлы отладки без оптимизации я уже выкладывать не буду, только с ней. Вы можете сравнить файлы из этого поста с изменениями для оптимизации из моих прошлых постов и вернуть всё как было в оригинальных файлах. Но зачем Вам более медленный движок?
0
Скорпион Скорпион 10 лет назад #
Ну я преследую немного другие цели.
Есть желание предложить пользователям совместное использование Ваше продукта и моего.
Для начала я хотел бы "вычленить" всю оптимизацию и подготовить "патч" для моего компонента.
Потом создать такой же "патч" для внедрения Вашего продукта "одним" нажатием. Для возможности включения/выключения его одним нажатием.

Надеюсь Вы не против такого тандема? Все права на Ваш уникальный продукт исключительно Ваши.
Я только хочу помочь пользователям внедрение таких уникальных вещей "одним" нажатием клавиши.
+1
WebMan WebMan 10 лет назад #
Класс отладки бесплатен для всех пользователей Инстанта. Можете использовать его в своих целях как захотите.

С компонентами класс отладки никак не пересекается. И по всем правилам, компоненты не должны менять файлы ядра, они пишутся в свои отдельные папки. Так что наши с Вами файлы пересекаться не должны. (Список изменённых файлов для отладки смотрите в топике)
Либо поясните в личке, что имеете ввиду.
0
Скорпион Скорпион 10 лет назад #
Ну зачем же личка? Мне также хочется услышать мнение других на мою идею. smile
Класс отладки бесплатен для всех пользователей Инстанта. Можете использовать его в своих целях как захотите.
Ну люди все разные - и реакция у всех своя. Лучше лишний раз переспросить, чем нарываться на грубости smile ИМХО.

И по всем правилам, компоненты не должны менять файлы ядра, они пишутся в свои отдельные папки
Мой компонент исключение из правил crazy Вот такой вот я несоблюдатель правил glasses

Возможно Вы не в курсе про что я - гляньте.
0
WebMan WebMan 10 лет назад #
С интересом прочитал про Вашу "Систему патчей". На мой взгляд, идея хорошая, реально будет восстребована пользователями.
Я готов предоставить файлы патчей оптимизаций и отладки как только будет как-то устаканен их формат с учётом всего запланированного функционала "Системы".
Завтра постараюсь посмотреть Вашу систему в работе и отписаться об увиденном.
0
Скорпион Скорпион 10 лет назад #
Приятно слышать :)
Раз Вас заинтересовал мой компонент - то вместо "вычленения" кода "оптимизации" и "отладки" бросаю все силы на реализацию двух моментов:
- загрузка/выгрузка файлов патчей
- возможность создания (а не изменения) файлов "патча".
dance
0
Скорпион Скорпион 10 лет назад #
Кстати....был бы очень признателен если бы Вы высказали своё видение структуры этих самых patch-файлов
0
WebMan WebMan 10 лет назад #
Скажу всё, что надумаю. smile
Олег Васильевич я Олег Васильевич я 10 лет назад #
Комментарий удален

Еще от автора

Хуки-хухуки: Исключаем неактивных пользователей из списков
Как иногда начинают свой монолог неопытные стендаперы: «У всех в жизни было такое …
«Расширенная отладка» для InstantCMS 2.14.1 (v.14.1.2) – большое обновление для разработчиков
Новые возможности и удобства, облегчающие разработчикам отладку компонентов и шаблонов.
Использование расширенной отладки. Часть 11. Анализ ошибок 403/404 и редиректов
Одной из неудобных задач при отладке для меня является поиск причины ошибки 403/404.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.