модули debug
debug/telemetry.php
Предупреждение
Данный модуль при неправильном использовании может вызвать серьезные сбои в работе сайта, или даже нескольких серверов, вызвав ДОС из-за ошибки в настройках.
Модуль debug/telemetry.php помогает проводить отладку и тестирование кода удаленно или локально.
Модуль активизиурется, если глобальная переменная $NovaTelemetry==true. В процессе активации модуль выполняет запрос HTTP POST к URL, указанному в его настройках, и передает след. параметры:
obj[page]='ключ страницы на которой он запустился',
obj[_SERVER]=/*содержимое $_SERVER/*,
obj[_ENV]=/*$_ENV*/
В ответ можно отправить пустую строку или массив json с командами тестирования или отладки, вида:
[
{command:"Команда 1",data:{параметры команды 1},payload_init:"модификатор url для отправки отчета 1"},
...
{command:"Команда 2",data:{параметры команды 1},payload_init:"модификатор url для отправки отчета 2"},
]
Здесь:
- "Команда" - имя команды, которую должен выполнить модуль (список команд см. в описании класса NovaTelemetry).
- {параметры команды 1} - описание параметров, доступных для каждой команды см. в описании класса NovaTelemetry.
- 'модификатор url для отправки отчета 2' - позволяет задать/изменить параметры запроса, передающего результаты выполнения команды.
Это может быть фрагмент URL вида "param1=value1¶m2=value2" или хеш-массив {param1:value1,param2:value2}
Как это работает в-целом
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках и таким образом инициализирует сессию телеметрии. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы либо по адресу из настроек, либо по модифицированному адресу, полученному из payload_init и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить.
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования.
Вызов телеметрии в блоке TCODE
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
Пример:
code ...
/*<!--{
//отправим отладочные данные
$_ENV['T'](array('command'=>'log','page'=>'some_test_report_page','obj'=>array('foo'=>$foo,'bar'=>$bar)));
}-->*/
code ...
Дополнительные данные передаваемые при каждом вызове.
- source - страница Nova, на которой произошел вызов.
- type - признак типа вызова. Это поле можно применять для различения данных передаваемых разными командами телеметрии. При инициализации сессии телеметрии это поле имеет значение init.
- run_id - идентификатор сессии телеметрии. При каждой инициализации генерируется новый run_id который затем передается при каждом вызове. Таким образом можно различить данные переданные разное время в одной сессии.
- send_time=unix time в момент выполнения вызова с микросекундной точностью.
- initiator[command]=команда, выполнение которой инициировало вызов.
- initiator[id]=порядковый номер комадны в списке команд.