Класс расширенной отладки для InstantCMS 2.3.0 (v.9) + оптимизация скорости

+36
2.39K
Обновление класса расширенной отладки и оптимизации для InstantCMS 2.3.0.
Иллюстрация

Мощный, но лёгкий класс расширенной отладки для InstantCMS 2. Позволяет легко, наглядно и управляемо получить информацию о времени выполнения, используемой памяти и других параметрах php-скриптов CMS и их частей.
Данный патч будет полезен всем. Разработчики компонентов смогут быстрее и нагляднее понять работу системы, проще отладить свои компоненты и темы, а в случае проблем с компонентами смогут получить от клиентов дополнительную отладочную информацию. Пользователи CMS получат инструмент для выявления причин тормозов и других проблем при размещении сайтов на реальных серверах.
Подробнее смотрите в моём блоге ранее и в документации, которую можно скачать по ссылкам ниже.

Изменения в этой версии:
------------------
• Совместимость с InstantCMS 2.3.0.
* Более точно учитывается время отладки виджетов, хуков, контроллера, шаблона
+ Вернул в отладку перехват и вывод сообщений о предупреждениях в SQL-запросах. Для этого перенёс получение mysqli->insert_id в cmsDatabase->query().
+ Добавлена коррекция точности PHP для гарантированного учёта десятых долей микросекунд.
+ Добавлен подсчёт времени старта PHP-модуля (от момента получения сервером запроса до выполнения первой строки кода). Может быть полезно для выявления медленно загружающегося модуля PHP.
* Информация по хукам, виджетам, контроллеру и шаблону в основной таблице вынесена в отдельный блок "Parts of script".
+ Добавлен подсчёт и вывод в суммарную таблицу объёма использованной памяти хуками, виджетами, контроллером и шаблоном.
+ Добавлен подсчёт и вывод в лог количества и времени sql-запросов, количества и времени инклудов и объёма использованой памяти для каждого хука и виджета.
+ Теперь в суммарной таблице жирным шрифтом выделяются операции, по которым включен вывод подробной информации.
+ Изменённые мной участки кода в оригинальных файлах движка для наглядности выделил примечаниями "<WebMan>".
* Сделаны мелкие косметические правки.

Разработчики Инстанта оптимизировали версию 2.3.0. Движок стал работать в два раза быстрее. Так что как я не старался, в этот раз сильного ускорения уже не получилось. Что, на самом деле, радует. Команда Инстанта – молодцы!
Что у меня получилось: ускорение 15-30% на фронтенде и до 60% в админке.

Суммарные изменения в оригинальном InstantCMS 2.3.0:
\index.php
\bootstrap.php
\system\config\autoload.php
\system\controllers\admin\frontend.php
\system\controllers\admin\actions\settings.php
\system\controllers\content\widgets\list\options.form.php
\system\core\cache.php
\system\core\controller.php
\system\core\core.php
\system\core\database.php
\system\core\eventsmanager.php
\system\core\form.php
\system\core\model.php
\system\core\template.php
\templates\default\admin.tpl.php
\templates\default\main.tpl.php

Если вы уже изменяли для себя какие-то из этих файлов, то сделайте сравнение моих версий с вашими файлами и внесите изменения в свои файлы вручную.
Файлы класса отладки (добавленные к оригинальной InstantCMS 2.3.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
\system\languages\en\debug.php
\system\languages\ru\debug.php
\templates\default\controllers\admin\settings_debug.tpl.php
\templates\default\css\debug.css
Скачать класс отладки можно в Каталоге


Установка производится стандартным способом Инстанта – пункт «Установить пакет дополнения» в Админке и указанием zip-архива из Каталога.
Либо можно просто распаковать содержимое папки package из архива с заменой файлов в папку с уже установленной системой.
Это версия только для InstantCMS 2.3.0, для более ранних не подходит.

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

Также можете скачать и почитать обновлённые описание и инструкцию:

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

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


Некоторые особенности учёта времени и памяти в этом классе для интересующихся:


Теперь, начиная с версии Инстант 2.3.0, при включении отладки показывается также и время создания страницы. Это очень удобно. Но не всегда хватает.

В расширенной отладке некоторые значения отличаются от значений стандартной отладки:

1. Время выполнения скрипта показывается чуть точнее. Во-первых, учёт времени начинается с самого момента старта системы, а не после выполнения некоторых команд и загрузки bootstrap.php. Во-вторых, фиксация окончания скрипта происходит реально после выполнения всех действий скрипта, а не почти в конце. В-третьих, выводится и учитывается в полном времени и время загрузки PHP-модуля Апача. Разница в показаниях стандартной отладки и расширенной может составлять около 1-3%. Для большинства случаев это не критично. Но иногда знать точные цифры нужно.

2. Объём используемой памяти скрипта в стандартной отладке показывается на момент окончания работы скрипта. Точнее, на момент чуть раньше окончания. В расширенной отладке основное отображаемое значение памяти – это пиковое (максимальное) за всё время работы скрипта. Так как во время работы часто бывают ситуации, когда память сначала выделяется, а потом очищается и забирается из использования. Поэтому судить о потреблении памяти лучше по пиковому значению — это позволит точнее планировать требуемую память при покупке хостинга.
Кроме того, нужно учитывать, что память выделяется сервером поблочно. В расширенной отладке можно включить блочный расчёт показателей памяти, что ещё точнее покажет реальное использование памяти системой. Кроме пикового, в расширенной отладке отображаются также начальное и конечное значения памяти.
-1
Алексей Т Алексей Т 9 лет назад #
За плюсил+
0
Loadырь Loadырь 9 лет назад #
Спасибо большущее.
0
R161Net R161Net 9 лет назад #
Огромный плюс+
0
Alexprofi Alexprofi 9 лет назад #
Спасибо! Большая помощь всему сообществу! +
0
Антон Антон 9 лет назад #
Не пойму почему до сих пор не включили данные изменения и возможности в стандарт?
Это наверно больше вопрос разработчикам Инстанта...
0
WebMan WebMan 9 лет назад #
Как раз сейчас веду переговоры об этом. Но разработчики сомневаются, что людям это нужно и что пользователи поймут как этим пользоваться.
0
Антон Антон 9 лет назад #
После установки вижу в логах сервера:

[Fri Dec 04 15:27:19 2015] [error] [client 92.ХХХ.ХХХ.ХХХ] PHP Notice: Uninitialized string offset: 0 in /var/www/ХХХ/templates/default/assets/ui/form.tpl.php on line 135, referer: http://ХХХ/projects

[Fri Dec 04 15:26:56 2015] [error] [client 92.ХХХ.ХХХ.ХХХ] PHP Notice: Undefined index: hook in /var/www/XXX/templates/default/assets/ui/form.tpl.php on line 135, referer: http://XXX/admin/settings/debug
0
WebMan WebMan 9 лет назад #
Поставил чистую 2.3.0, установил стандартным способом "Отладку". Таких ошибок у себя в логе Апача не обнаружил.
Если Вы игрались с настройками отладки в Админке, то попробуйте заметить, при каких настройках появляются такие ошибки и потом пришлите мне Ваш файл конфигурации \system\config\debug.php в личку. Я попробую воспроизвести эти ошибки у себя с Вашим конфигом.
0
Игорь ФИН Игорь ФИН 9 лет назад #
плюсую, чуть позже посмотрю как работает.
0
lezginka.ru lezginka.ru 9 лет назад #
+
надо попробовать, как раз были с этим проблемы...
+1
WebMan WebMan 9 лет назад #
Я вот посмотрел на основную таблицу (на скрине вверху темы) и подумал, может в нижней части поменять местами блоки "events/hooks" и "widgets"? Виджеты и более понятны людям, и обычно "съедают" больше времени - поставить их первыми?

Еще от автора

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