Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

Debugtelemetry

модули 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&param2=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]=порядковый номер комадны в списке команд.
Edit - History - Print - Recent Changes - Search
Page last modified on June 28, 2015, at 09:09 PM EST