11.1.1 Включение отладки
Средства отладки несколько замедляют работу системы и
включаются для выбранных IP адресов. Для включения необходимо перейти в модуль
«Настройки системы», выбрать раздел «Система» и модуль «Общие настройки». В разделе
«Отладка» можно выбрать до пяти IP адресов (текущий адрес для удобства
отображается подсказкой) и индивидуально настроить вывод информации по ним.
Настройки позволяют включать и выключать отладочные конструкции (для использования классом отладки и отладки шаблонов). Для отладки шаблонов в параметре «Настройки для IP *» необходимо выбрать один из пунктов «Парсер шаблонов: отладочные конструкции» или «Парсер шаблонов: полная информация», для возможности использования средства отладки AMI_Debug необходимо выбрать пункт «Парсер шаблонов: полная информация» и включить параметр «Отображать отладочную информацию».
При отключении кэширования или включении отладочной
информации к выводу добавляется красная предупреждающая строка. Она видна
только для выбранных IP адресов.
Теперь появляется возможность использовать средства отладки AMI_Debug, описание и
примеры доступны в полном
справочнике.
Примеры
использования: Инструкция d::w('<h1>My
debug</h1>'); выводит строку как
есть: My debug
Инструкция d::pr(array(1,2,3), ‘my array’); выводит первый аргумент, используя функцию print_r(): my array (1) models.php: 59 Array ( [0] => 1 [1] => 2 [2] => 3 )
Инструкция d::vd(array(1,2,3), ‘my array’); выводит первый аргумент, используя функцию var_dump(): my array (1) models.php: 59
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
Инструкция d::trace(); выводит стек вызова: Debug backtrace: models.php:59
|
File
|
Line
|
Caller
|
Args
|
|
E:\_wwwroot\models.php
|
59
|
AMI_Debug::trace()
|
|
11.1.2 Профилирование кода и запросов к БД
При разработке кода всегда необходимо использовать средства
профилирования, для оценки потребляемых кодом ресурсов и оптимизации работы
плагина.
Для профилирования доступны три метода:
- Инструкция AMI::getSingleton('response')->displayBench();
(AMI_Response::
displayBench())
сообщает системе, что нужно отображать результаты профилирования:
»»
Warning: debug mode is enabled, 2010-11-26 18:21:31
GMT: 2010-11-26 12:21
Script
total: 0.050174 sec [DB
total: 0.018054 sec /
queries: 0.017707 sec (6 times) / fetch: 0.000347 sec (31 times)] [PHP
total: 0.032120 sec / peak mem usage: 430 912 bytes]
Script total
- общее
время
работы
скрипта;
DB total - общее
время
работы
с
базой
данных;
queries – время
и
количество
запросов
к
базе
данных;
fetch - время
и
количество
записей,
извлечённых
из
результатов
запросов
к
базе
данных;
PHP total - общее
время
работы
PHP-кода;
peak mem usage
– максимальный
объём
памяти,
выделенный
скрипту
(memory_get_peak_usage()).
-
Инструкция
AMI::getSingleton('db')->displayQueries(true); (AMI_DB::displayQueries())
включает
выдачу
запросов
к
базе
данных
в
отладочную
информацию:
»»
Warning: debug mode is enabled, 2010-11-26 18:21:31
GMT: 2010-11-26 12:21
Delay: 0.00332
sec, total: 0.00567 sec, total fetch count: 4
DESCRIBE my_module1_table_item
Delay: 0.00340 sec, total: 0.00908
sec, total fetch count: 14
SELECT i.id,i.public,i.lang,i.header,i.announce,i.body,i.date_created,i.date_modified
FROM my_module1_table_item i
Delay: 0.00031 sec, total: 0.00938
sec, total fetch count: 17
SHOW CREATE TABLE `my_module2_table_cat`
Delay: 0.00456 sec, total: 0.01394
sec, total fetch count: 20
DESCRIBE my_module2_table_item
Delay: 0.00376 sec, total: 0.01771
sec, total fetch count: 31
SELECT cat.id cat_id,cat.header cat_header,cat.lang
cat_lang,i.id,i.public,i.lang,i.header,i.announce,i.body,i.date_created,i.date_modified,cat.id
cat_id,cat.header cat_header,cat.lang cat_lang FROM my_module2_table_item i
INNER JOIN my_module2_table_cat cat ON cat.id=i.id_cat
Delay – время исполнения запроса;
total - общее время исполнения запросов;
total fetch count
- время и количество записей, извлечённых из результатов запросов к базе данных.
- Инструкция d::b(‘label’);
(d::b())
позволяет добавлять точки профилирования:
»»
Warning: debug mode is enabled, 2010-11-26 18:21:31
GMT: 2010-11-26 12:21
Script
total: 0.049011 sec [DB
total: 0.018188 sec /
queries: 0.017823 sec (6 times) / fetch: 0.000365 sec (31 times)] [PHP
total: 0.030823 sec / peak mem usage: 441 752 bytes]
[at start]: 0.01915 sec (total: 0.019) , mem diff: 259 736 bytes (peak: 273
432 bytes), models.php: 64
[at end]: 0.02959 sec (total: 0.049) , mem diff: 163 208 bytes (peak: 438
640 bytes), models.php: 117
0.02959 sec –
время с предыдущего вызова d::b()
или со старта скрипта;
total - время со старта
скрипта;
mem diff –
разница объёма выделенной памяти с предыдущего вызова d::b()
или со старта скрипта (memory_get_usage());
peak - максимальный объём памяти,
выделенный скрипту (memory_get_peak_usage())
в момент вызова d::b();
models.php:
117 –
имя файла и строка, из которой был вызван d::b().
11.1.3 Средства отладки шаблоновВ Amiro.CMS также встроены средства для глубокой отладки шаблонов. Подробная инструкция по их использованию доступна в документации по интеграции дизайна.
|