Десятая, юбилейная версия. Очень много доработок и изменений. Пока описывал использование «Расширенной отладки», в голову приходили мысли и идеи. Вот результат их воплощения.
Если вы не знакомы с «Расширенной отладкой», то можете почитать «Описание её возможностей».
Доработки и изменения в этой версии:
+ Добавил параметры инициализации шаблона в основную таблицу и в лог.
+ Добавил вывод в лог моментов старта виджетов, контроллера и шаблона. Трассировку виджетов перенёс в лог их старта.
+ В логе завершения работы контроллера теперь выводится имя этого контроллера.
+ В логе рендеринга теперь выводится имя шаблона и при старте, и при окончании работы.
+ Добавил вывод информации о событиях и хуках в логе виджетов.
+ В логе виджетов добавил подсчёт и вывод времени получения данных и рендеринга виджетов, а также сообщение о том, производился ли рендеринг виджета.
+ В логе БД добавил вывод результатов SQL-запросов.
+ Добавил в лог событий и хуков опциональный вывод данных этих событий.
+ Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций.
+ В контрольных точках добавил вывод пикового значения памяти.
+ Во все логи добавил вывод текущего времени скрипта (времени, прошедшего с момента старта скрипта).
+ В основную таблицу добавил значение 'script peak' (пик памяти скрипта за вычетом отладки) и поставил его на первое место.
+ Расширил фильтры для запросов к БД, автозагрузок и инклудов. Теперь фильтр по запрашивающему файлу ищет по трассировке на глубину, заданную в настройках трассировки для этого лога.
+ Добавил фильтр событий/хуков по пути/имени вызывающего файла или класса/функции.
+ Добавил фильтр обращений к кэшу по типу: все/set/get.
+ Добавил фильтр обращений к кэшу по имени ключа.
+ Добавил фильтр обращений к кэшу по пути/имени вызывающего файла или класса/функции.
+ Добавил вывод данных при обращениях к кэшу.
+ Добавил подсчёт отфильтрованных строк лога и вывод их в таблицу фильтров.
+ Добавил подсветку найденного в текстах SQL-запросов и трассировках при использовании фильтров.
+ Добавил подсчёт SQL-запросов с ошибками и предупреждениями (раздельно) и вывод информации об этом в основной таблице в блоке "SQL queries".
+ Полностью переделал вывод параметров, данных и результатов. Более компактный и читабельный вид, добавлены типы значений и подсветка индексов/типов/значений.
+ Добавил подсветку синтаксиса SQL-запросов.
+ Добавил выбор уровня перехвата ошибок PHP (по настройкам сервера или строгий).
+ Добавил подсказки к параметрам соединения с БД в логах.
+ Добавил подсказки к значениям памяти в логах.
+ В верхнем правом углу блока "Текущие параметры отладки" на странице настройки "Отладки" в Админке теперь пишется версия "Отладки".
— Исправил ошибку неправильного расчёта начальной памяти скрипта и памяти отладки.
— Исправил ошибку, при которой не выводились автозагрузки и инклуды, если искомая построка находилась в начале пути к файлу.
* Загрузка языковых констант теперь происходит только при загрузке Админки.
* Изменил отправку уведомлений о критических ошибках на почту. Теперь почта берётся не из профиля пользователя, а из настроек отладки в Админке.
* Удалил из основной таблицы неинформативное значение 'memory_used' (использованная память).
* Сделал более компактный и аккуратный вывод текстов SQL-запросов и перенос длинных данных/результатов.
* Подправил формулировки всплывающих подсказок в меру знания мной и Гугл-транслейтом английского языка.
* Чуток подправил css-стили для более наглядного выделения информации.
* Переписал строки на использование одинарных кавычек.
* Подправил некоторые моменты стиля кода до стандартов Инстанта.
Ещё изменил название с «Класс расширенной отладки» на «Расширенная отладка». Так будет правильнее – это не просто класс, а готовая система.
Теперь о некоторых изменениях чуть подробнее.
Работа с шаблоном в InstantCMS 2 состоит из двух больших этапов. Сначала происходит его загрузка и инициализация с использованием его настроек. А после окончания подготовки данных происходит заполнение шаблона и его вывод на страницу (рендеринг). В версии 9.1 регистрировалась только вторая часть. Теперь фиксируется всё.
В таблице применённых фильтров теперь для каждого фильтра подсчитывается количество найденных строк. А в логах для полной наглядности найденные подстроки выделяются зелёным цветом.
Спасибо • Mike • за помощь с регулярками!
Поэтому написал свою небольшую функцию. Она «знает» все основные операторы и операции (хотя и чуть меньше, чем "GeSHi", но на демо подсвечивает всё во всех запросах, которые я смотрел), выделяет строки и цифры. Получилось ещё красивее и в десять раз быстрее. Не идеал, конечно, но для большинства запросов – самое оно.
Скачать полную установку и обновление можно в Каталоге.
Также можете скачать и почитать обновлённую инструкцию:
Подробное описание выводимых значений, настроек отладки в Админке и использования точек отладки (htm-файл в архиве)
Спасибо всем за комментарии и оценки. Отдельное спасибо Олег Васильевич я за поддержку! Мне очень приятно осознавать, что мой труд кому-то нужен и полезен.
Если вы не знакомы с «Расширенной отладкой», то можете почитать «Описание её возможностей».
Доработки и изменения в этой версии:
+ Добавил параметры инициализации шаблона в основную таблицу и в лог.
+ Добавил вывод в лог моментов старта виджетов, контроллера и шаблона. Трассировку виджетов перенёс в лог их старта.
+ В логе завершения работы контроллера теперь выводится имя этого контроллера.
+ В логе рендеринга теперь выводится имя шаблона и при старте, и при окончании работы.
+ Добавил вывод информации о событиях и хуках в логе виджетов.
+ В логе виджетов добавил подсчёт и вывод времени получения данных и рендеринга виджетов, а также сообщение о том, производился ли рендеринг виджета.
+ В логе БД добавил вывод результатов SQL-запросов.
+ Добавил в лог событий и хуков опциональный вывод данных этих событий.
+ Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций.
+ В контрольных точках добавил вывод пикового значения памяти.
+ Во все логи добавил вывод текущего времени скрипта (времени, прошедшего с момента старта скрипта).
+ В основную таблицу добавил значение 'script peak' (пик памяти скрипта за вычетом отладки) и поставил его на первое место.
+ Расширил фильтры для запросов к БД, автозагрузок и инклудов. Теперь фильтр по запрашивающему файлу ищет по трассировке на глубину, заданную в настройках трассировки для этого лога.
+ Добавил фильтр событий/хуков по пути/имени вызывающего файла или класса/функции.
+ Добавил фильтр обращений к кэшу по типу: все/set/get.
+ Добавил фильтр обращений к кэшу по имени ключа.
+ Добавил фильтр обращений к кэшу по пути/имени вызывающего файла или класса/функции.
+ Добавил вывод данных при обращениях к кэшу.
+ Добавил подсчёт отфильтрованных строк лога и вывод их в таблицу фильтров.
+ Добавил подсветку найденного в текстах SQL-запросов и трассировках при использовании фильтров.
+ Добавил подсчёт SQL-запросов с ошибками и предупреждениями (раздельно) и вывод информации об этом в основной таблице в блоке "SQL queries".
+ Полностью переделал вывод параметров, данных и результатов. Более компактный и читабельный вид, добавлены типы значений и подсветка индексов/типов/значений.
+ Добавил подсветку синтаксиса SQL-запросов.
+ Добавил выбор уровня перехвата ошибок PHP (по настройкам сервера или строгий).
+ Добавил подсказки к параметрам соединения с БД в логах.
+ Добавил подсказки к значениям памяти в логах.
+ В верхнем правом углу блока "Текущие параметры отладки" на странице настройки "Отладки" в Админке теперь пишется версия "Отладки".
— Исправил ошибку неправильного расчёта начальной памяти скрипта и памяти отладки.
— Исправил ошибку, при которой не выводились автозагрузки и инклуды, если искомая построка находилась в начале пути к файлу.
* Загрузка языковых констант теперь происходит только при загрузке Админки.
* Изменил отправку уведомлений о критических ошибках на почту. Теперь почта берётся не из профиля пользователя, а из настроек отладки в Админке.
* Удалил из основной таблицы неинформативное значение 'memory_used' (использованная память).
* Сделал более компактный и аккуратный вывод текстов SQL-запросов и перенос длинных данных/результатов.
* Подправил формулировки всплывающих подсказок в меру знания мной и Гугл-транслейтом английского языка.
* Чуток подправил css-стили для более наглядного выделения информации.
* Переписал строки на использование одинарных кавычек.
* Подправил некоторые моменты стиля кода до стандартов Инстанта.
Ещё изменил название с «Класс расширенной отладки» на «Расширенная отладка». Так будет правильнее – это не просто класс, а готовая система.
Теперь о некоторых изменениях чуть подробнее.
Добавил параметры инициализации шаблона
Теперь в суммарной таблице «Отладки» больше нет пустых мест. 😊Работа с шаблоном в InstantCMS 2 состоит из двух больших этапов. Сначала происходит его загрузка и инициализация с использованием его настроек. А после окончания подготовки данных происходит заполнение шаблона и его вывод на страницу (рендеринг). В версии 9.1 регистрировалась только вторая часть. Теперь фиксируется всё.
Добавил вывод в лог моментов старта виджетов, контроллера и шаблона
В этой версии я разделил в логе строки о виджетах, контроллере и шаблоне на две строки: момент старта и окончания обработки. Для наглядности перенёс трассировку виджетов в лог их старта.Добавил более широкий вывод информации о КТ и операциях
Теперь в зависимости от типа лога выводятся: текущее время с момента старта скрипта, количество и время запросов к БД, автозагрузок/инклудов, событий/хуков, состояние памяти. Например, для КТ вот так:В логе БД добавил вывод результатов SQL-запросов
Добавил в лог событий и хуков опциональный вывод данных этих событий
Добавил в лог операций с кэшем опциональный вывод данных и результатов этих операций
В основную таблицу добавил значение 'script peak'
В стандартной отладке и в предыдущих версиях расширенной основной цифрой использования памяти скриптом была разность между памятью на момент остановки работы скрипта и стартовым значением. Это не совсем корректно. Так как в реальности скрипт практически всегда использует памяти больше, что видно по более высокому пиковому значению памяти. Поэтому начиная с этой версии основной цифрой использования памяти скриптом будет разница между пиком и стартом.Расширил фильтры ...
Везде, где это имело смысл, сделал максимум фильтров для эффективной выборке по логам. У каждого типа операций свой набор фильтров.В таблице применённых фильтров теперь для каждого фильтра подсчитывается количество найденных строк. А в логах для полной наглядности найденные подстроки выделяются зелёным цветом.
Полностью переделал вывод параметров, данных и результатов
До этой версии вывод параметров, данных и результатов оформлялся функцией PHP print_r. Это было простое решение. Но не настолько наглядное, как мне бы хотелось. Поэтому я немного подумал и написал специальную функцию для обработки вывода функции var_dump. Получилось намного нагляднее и в цвете. Такое оформление занимает чуть больше времени, но за наглядность можно заплатить десятком-другим миллисекунд.Спасибо • Mike • за помощь с регулярками!
Добавил подсветку синтаксиса SQL-запросов
Сначала сделал подсветку с использованием класса "GeSHi", появившемся в InstantCMS 2.3.0, добавив к нему файл описания подсветки для MySQL. Получилось красиво, но очень тормознуто. Подсветка 50 запросов на главной странице демо занимала в три раза больше времени, чем создание всей страницы. Жесть...Поэтому написал свою небольшую функцию. Она «знает» все основные операторы и операции (хотя и чуть меньше, чем "GeSHi", но на демо подсвечивает всё во всех запросах, которые я смотрел), выделяет строки и цифры. Получилось ещё красивее и в десять раз быстрее. Не идеал, конечно, но для большинства запросов – самое оно.
Добавил выбор уровня перехвата ошибок PHP
Раньше в «Расширенной отладке» был только один уровень перехвата ошибок – максимальный. Это приводило к тому, что в логах веб-сервера фиксировались любые, даже самые мелкие предупреждения и примечания. На работающем сайте это избыточно. Поэтому я добавил галку «Включить строгий режим перехвата ошибок для точной отладки», которая включает уровень (E_ALL | E_STRICT). Если эта галка выключена, то перехват ошибок работает по настройкам веб-сервера.Скачать полную установку и обновление можно в Каталоге.
Также можете скачать и почитать обновлённую инструкцию:
Подробное описание выводимых значений, настроек отладки в Админке и использования точек отладки (htm-файл в архиве)
Спасибо всем за комментарии и оценки. Отдельное спасибо Олег Васильевич я за поддержку! Мне очень приятно осознавать, что мой труд кому-то нужен и полезен.
Реклама #
Олег Васильевич я 8 лет назад #
WebMan 8 лет назад #
Alekseinet 8 лет назад #
Буду разбираться изучать как этим пользоваться.. Но это 1000% что очень реально нужная топовая вещь, так как по другому понять что происходит с сайтом можно только через шамана с бубном =))))
Web Man я не знаю сколько нужно иметь сил и знаний чтобы это все сделать.. скажу так я бы устал описывать Ваше дополнение =))
Для благодарностей нужно где-то указать все возможные кошельки...
Я не за шаблоном пришел не думайте =)
Всех с наступающим!
WebMan 8 лет назад #
Единственно, если уж Олег Васильевич я устраивает конкурс, то будет правильно установить какие-то достаточные сроки, после которых будут подведены итоги и розданы призы. И какие-то правила. Например, как поступит владелец призов, если будут два победителя с одинаковыми суммами. Отдаст каждому по шаблону? Или ...? Ждём от него дополнительной информации по этим вопросам.
Олег Васильевич я 8 лет назад #
Олег Васильевич я 8 лет назад #
WebMan 8 лет назад #
Покажу, чем Вам, как разработчику шаблонов, может быть полезна "Отладка". Пару примеров. Совсем простой и просто простой.
Предположим, Вы дорабатываете шаблон для виджета категорий контента. И хотите понимать, какие данные можно в нём использовать для вывода или для других манипуляций. Это можно сделать несколькими щелчками мышки.
Установите "Отладку" на демо Двойки стандартным способом. Зайдите в настройки "Отладки" в Админке и убедитесь, что она включена. На вкладке "Виджеты" включите "Показывать виджеты", "Выводить в лог данные и результаты виджетов". В выпадающих списках выберите виджет 'categories' и контроллер 'content'. Сохраните настройки и зайдите на страницу с контентом, где есть виджет "Категории контента". Например, в раздел "Статьи" http://demo/articles.
Под страницей Вы увидите не просто массив с точными индексами для Вашего виджета, а и заполненые значения элементов этого массива. Причём содержимое массива будет актуально для открытой страницы, то есть будет содержать реальные данные, выводящиеся в этом виджете на этой странице. И если в Вашем коде что-то выводится не так, как должно было по Вашему мнению, Вы всегда увидите, есть ли нужные данные на этой странице и если есть, то какие они.
Под спойлером пример - часть этого массива на скрине:
В настройках "Отладки" отключите вывод виджетов, оставшийся из прошлого примера, и убедитесь, что разрешён вывод контрольных точек.
Теперь в файле \templates\default\controllers\content\item_view.tpl.php после строки
Вы наглядно увидите всё содержимое обеих переменных, которое передаётся в шаблон этой страницы:
Надеюсь, теперь Вам будет проще понимать, какие данные передаются в Ваш шаблон, какие элементы массива присутствуют и что именно содержат.
Олег Васильевич я 8 лет назад #
Yuran 5 лет назад #
WebMan 5 лет назад #