Центр документации
Карта сайта

Новая документация

Расширенная настройка
Разработчикам (API)

Обновленная документация 

Разработчикам (API)

Средства отладки и профилирования

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 Профилирование кода и запросов к БД

При разработке кода всегда необходимо использовать средства профилирования, для оценки потребляемых кодом ресурсов и оптимизации работы плагина.

Для профилирования доступны три метода:

  1. Инструкция 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()).


  2. Инструкция 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 - время и количество записей, извлечённых из результатов запросов к базе данных.


  3. Инструкция 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 также встроены средства для глубокой отладки шаблонов. Подробная инструкция по их использованию доступна в документации по интеграции дизайна.


Установка и настройка Руководство пользователя Интеграция дизайна Разработчикам (API) Документация для скачивания
 2000 – 2011 © Amiro.CMS Все права защищены.
Работает на: Amiro CMS