Recent Changes - Search:

PmWiki

pmwiki.org

edit SideBar

Debugtelemetry

Nova.Debugtelemetry History

Hide minor edits - Show changes to output

Changed line 40 from:
* run_id - идентификатор сессии телеметрии. При каждой инициализации генерируется новый run_id который затем передается ри каждом вызове. Таким образом можно различить данные переданные разное время в одной сессии.
to:
* run_id - идентификатор сессии телеметрии. При каждой инициализации генерируется новый run_id который затем передается при каждом вызове. Таким образом можно различить данные переданные разное время в одной сессии.
Changed line 24 from:
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы либо по адресу из настроек, либо по модифицированному адресу, полученному из payload_init и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить.
to:
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках и таким образом инициализирует сессию телеметрии. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы либо по адресу из настроек, либо по модифицированному адресу, полученному из payload_init и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить.
Added lines 39-40:
* type - признак типа вызова. Это поле можно применять для различения данных передаваемых разными командами телеметрии. При инициализации сессии телеметрии это поле имеет значение init.
* run_id - идентификатор сессии телеметрии. При каждой инициализации генерируется новый run_id который затем передается ри каждом вызове. Таким образом можно различить данные переданные разное время в одной сессии.
Added line 38:
* source - страница Nova, на которой произошел вызов.
Changed lines 27-28 from:
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
to:
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];\\
Пример:
Added lines 26-35:
!!!Вызов телеметрии в блоке [[NovaTelemetry|TCODE]]
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
[@
code ...
/*<!--{
//отправим отладочные данные
$_ENV['T'](array('command'=>'log','page'=>'some_test_report_page','obj'=>array('foo'=>$foo,'bar'=>$bar)));
}-->*/
code ...
@]
Changed lines 19-20 from:
* "Команда" - имя команды, которую должен выполнить модуль (список команд см. ниже).
* {параметры команды 1} - описание параметров, доступных для каждой команды см. ниже
.
to:
* "Команда" - имя команды, которую должен выполнить модуль (список команд см. в описании класса [[NovaTelemetry]]).
* {параметры команды 1} - описание параметров, доступных для каждой команды см. в описании класса [[NovaTelemetry]]
.
Deleted lines 22-74:

!!!Команды:
* GET_INCLUDES - Возвращает список всех слотов, загруженных на странице: obj['includes']=array('PLACE'=>array('inc_id'=>$inc_id,'module'=>$module),...).
* GET_REQUEST_DATA - Возвращает список всех слотов, загруженных на странице. obj['_GET']=$_GET,obj['_POST']=$_POST,obj['_COOKIE']=$_COOKIE,obj['_FILES']=$_FILES, obj['_SERVER']=$_SERVER;
* INJECT_REQUEST_DATA - позволяет переопределить переменные данных выполняемого запроса значениями переданными в поле data: $_GET=$data['_GET'],$_POST=$data['_POST'],...
* INJECT_SESSION_DATA - позволяет переопределить данные сессии. '''!Сессия при этом не инициализируется и не прерывается. По завершении скрипта внесенные данные могут автоматически сохраниться и пререзапишут оригинал!'''.
* GET_INCLUDE - возвращает данные слота с именем, переданным в поле data['place'].
* GET_PAGE - возвращает метаданные страницы.
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова (если установлено поле data[args]), вывод (data[output]), результат выполнения (data[result]). Если слот не был определен на странице, но была попытка его вызвать, дополнительно будет возвращен признак no_include. Каждый запуск слота порождает отдельный вызов телеметрии.
* WATCH_SQL_QUERIES - включает трассировку SQL запросов. В поле data[pattern] нужно передать регулярное выражение, которому должны соответствовать строки запросов, что-бы попасть в отчет. Каждый удовлетворяющий правилу запрос порождает вызов телеметрии. Возможна настройка отправки вызова как до выполнения запроса (data[before]), так и после (data[after]).
* REGISTER_SHUTDOWN_FUNCTION - позволяет определить функцию, выполняемую в момент завершения сценария. Код функции передается в поле data.
* GET_MEMORY_USAGE - получить количество памяти, выделенной php в момент вызова (см. memory_get_usage). obj[memory]=memory_get_usage().
* GET_SQL_ERROR_INFO - получить информацию о последней ошибке SQL.
* GET_LOADED_EXTENSIONS - получить список загруженых расширений php. obj[extensions]=array(/*extensions list*/);
* GET_INCLUDED_FILES - получить список включенных файлов php. obj[included_files]=array(/*files list*/);
* GET_DEFINED_CONSTANTS - получить список определенных констант. obj[constants]=array(/*files list*/);
* INI_GET_ALL - вывести значения переменных конфигурации php (ini_get_all).
* PHPINFO - получить html код выполнения phpinfo(): obj[phpinfo]=/*html*/.
* OK - продолжить выполнение.
* EXIT - прервать выполнение.
* DIE - прервать выполнение и вывести сообщение из data. (die($data));
* DUMP_EVAL - выполнить код из data и отправить результат.'''Все команды EVAL выполняются в контексте метода NovaTelemetry::RunCode.
* RETURN_VALUE - передать управление вызвавшему коду и вернуть значение, переданное в data.
* RETURN_EVAL - выполнить php код в поле data и вернуть полученное значение вызвавшему коду.
* TDECODE - раскомментировать блоки кода отладки/тестирования. В поле data[key] можно передать ключ-индикатор раскомментируемых блоков кода. См. раздел TCODE далее.

!!!TCODE
TCODE - специально сформированные комментарии, содержащие код, который в рабочей версии программы выполняться не должен, однако может быть запущен при необходимости отладки или тестирования.\\
Пример:
[@
some code...
/*<!--{
echo "This is test var:".$test_var;
}-->*/
some code...
//<!--KEY{echo "This another debug block with KEY";}-->
some more code...
/*<!--KEY{
echo "This another debug block with KEY";
}KEY-->*/
@]
Т.о. если передать комманду {command:"TDECODE"}, будет раскомментирован первый блок, а если передать {command:"TDECODE",data:{key:"KEY"}} будут раскомментированы два блока ниже.\\
TCODE может внедряться и будет обработан как в коде модулей, коде eval_php.php, так и в их настройках.
!!!Вызов телеметрии в блоке TCODE
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
[@
code ...
/*<!--{
//отправим отладочные данные
$_ENV['T'](array('command'=>'log','page'=>'some_test_report_page','obj'=>array('foo'=>$foo,'bar'=>$bar)));
}-->*/
code ...
@]
Added line 35:
* GET_SQL_ERROR_INFO - получить информацию о последней ошибке SQL.
Changed line 31 from:
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова (если установлено поле data[args]), вывод (data[output]), результат выполнения (data[result]). Если слот не был определен на странице, но был его вызов, дополнительно будет возвращен признак no_include. Каждый запуск слота порождает отдельный вызов телеметрии.
to:
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова (если установлено поле data[args]), вывод (data[output]), результат выполнения (data[result]). Если слот не был определен на странице, но была попытка его вызвать, дополнительно будет возвращен признак no_include. Каждый запуск слота порождает отдельный вызов телеметрии.
Changed line 26 from:
* GET_REQUEST_DATA - Возвращает список всех слотов, загруженных на странице. obj['_GET']=$_GET,obj['_POST']=$_POST,obj['_COOKIE']=$_COOKIE,obj['_FILES']=$_FILES;
to:
* GET_REQUEST_DATA - Возвращает список всех слотов, загруженных на странице. obj['_GET']=$_GET,obj['_POST']=$_POST,obj['_COOKIE']=$_COOKIE,obj['_FILES']=$_FILES, obj['_SERVER']=$_SERVER;
Changed line 43 from:
* DUMP_EVAL - выполнить код из data и отправить результат.
to:
* DUMP_EVAL - выполнить код из data и отправить результат.'''Все команды EVAL выполняются в контексте метода NovaTelemetry::RunCode.
Changed line 28 from:
* INJECT_SESSION_DATA - позволяет переопределить данные сессии. '''!Сессия при этом не инициализируется и не прерывается. По завершении скрипта внесенные данные сохранятся и пререзапишут оригинал!'''.
to:
* INJECT_SESSION_DATA - позволяет переопределить данные сессии. '''!Сессия при этом не инициализируется и не прерывается. По завершении скрипта внесенные данные могут автоматически сохраниться и пререзапишут оригинал!'''.
Changed line 13 from:
{command:'Команда 1',data:{параметры команды 1},payload_init:'модификатор url для отправки отчета 2'},
to:
{command:"Команда 1",data:{параметры команды 1},payload_init:"модификатор url для отправки отчета 1"},
Changed line 15 from:
{command:'Команда 2',data:{параметры команды 1},payload_init:'модификатор url для отправки отчета 2'},
to:
{command:"Команда 2",data:{параметры команды 1},payload_init:"модификатор url для отправки отчета 2"},
Changed line 63 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.\\
to:
Т.о. если передать комманду {command:"TDECODE"}, будет раскомментирован первый блок, а если передать {command:"TDECODE",data:{key:"KEY"}} будут раскомментированы два блока ниже.\\
Changed lines 63-64 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
to:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.\\
TCODE может внедряться и будет обработан как в коде модулей, коде eval_php.php, так и в их настройках
.
Added line 28:
* INJECT_SESSION_DATA - позволяет переопределить данные сессии. '''!Сессия при этом не инициализируется и не прерывается. По завершении скрипта внесенные данные сохранятся и пререзапишут оригинал!'''.
Added lines 42-44:
* DUMP_EVAL - выполнить код из data и отправить результат.
* RETURN_VALUE - передать управление вызвавшему коду и вернуть значение, переданное в data.
* RETURN_EVAL - выполнить php код в поле data и вернуть полученное значение вызвавшему коду.
Changed line 9 from:
obj[_EVAL]=/*$_EVAL*/
to:
obj[_ENV]=/*$_ENV*/
Changed line 61 from:
Когда модуль телеметрии активено, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
to:
Когда модуль телеметрии активен, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
Changed line 61 from:
Кода модуль телеметрии активено, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
to:
Когда модуль телеметрии активено, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
Added lines 60-69:
!!!Вызов телеметрии в блоке TCODE
Кода модуль телеметрии активено, он добавляет обработчик отправки и получения данных телеметрии: $_ENV['T'];
[@
code ...
/*<!--{
//отправим отладочные данные
$_ENV['T'](array('command'=>'log','page'=>'some_test_report_page','obj'=>array('foo'=>$foo,'bar'=>$bar)));
}-->*/
code ...
@]
Added lines 3-4:
'''Предупреждение'''\\
''Данный модуль при неправильном использовании может вызвать серьезные сбои в работе сайта, или даже нескольких серверов, вызвав ДОС из-за ошибки в настройках.''\\
Changed lines 60-64 from:
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования.
to:
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования.
!!!Дополнительные данные передаваемые при каждом вызове.
* send_time=unix time в момент выполнения вызова с микросекундной точностью.
* initiator[command]=команда, выполнение которой инициировало вызов.
* initiator[id]=порядковый номер комадны в списке команд
.
Changed line 58 from:
!!!Как это работает вместе
to:
!!!Как это работает в-целом
Changed line 8 from:
В ответ можно отправить пустую строку или структуру json с командами тестирования или отладки, вида:
to:
В ответ можно отправить пустую строку или массив json с командами тестирования или отладки, вида:
Changed line 60 from:
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования,
to:
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования.
Changed lines 59-60 from:
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы с настроенными в параметрах команд данными и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить.
to:
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы либо по адресу из настроек, либо по модифицированному адресу, полученному из payload_init и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить.
Т.о. в результате получаем информацию о выполнении тех или иных частей кода, можем проводить отладку, запускать различные ветви тестирования,
Changed line 42 from:
!!!TCODE\\
to:
!!!TCODE
Changed line 22 from:
Команды:
to:
!!!Команды:
Changed line 42 from:
TCODE\\
to:
!!!TCODE\\
Changed lines 57-59 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
to:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
!!!Как это работает вместе
Модуль инициализируется и выполняет запрос по адресу, заданному в настройках. В ответ он получает одну или несколько команд с параметрами и выполняет их. По мере срабатывания отправляются вызовы с настроенными в параметрах команд данными и в ответ также могут быть получены новые наборы команд, котрые модуль также будет пытаться выполнить
.
Changed line 43 from:
TCODE - специально сфоримрованные комментарии, содержащие код, который в рабочей версии программы выполняться не должен, однако может быть запущен при необходимости отладки или тестирования.\\
to:
TCODE - специально сформированные комментарии, содержащие код, который в рабочей версии программы выполняться не должен, однако может быть запущен при необходимости отладки или тестирования.\\
Changed line 57 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
to:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
Changed line 57 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
to:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
Changed lines 51-55 from:
//<!--key{echo "This another debug block with key";}-->
to:
//<!--KEY{echo "This another debug block with KEY";}-->
some more code...
/*<!--KEY{
echo "This another debug block with KEY";
}KEY-->*/
Changed line 57 from:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок,
to:
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок, а если передать: {command:TDECODE,data:{key:'KEY'}} будут раскомментированы два блока ниже.
Changed lines 28-53 from:
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова, вывод, результат выполнения. Если слот не был определен на странице, но был его вызов, дополнительно будет возвращен признак no_include.
to:
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова (если установлено поле data[args]), вывод (data[output]), результат выполнения (data[result]). Если слот не был определен на странице, но был его вызов, дополнительно будет возвращен признак no_include. Каждый запуск слота порождает отдельный вызов телеметрии.
* WATCH_SQL_QUERIES - включает трассировку SQL запросов. В поле data[pattern] нужно передать регулярное выражение, которому должны соответствовать строки запросов, что-бы попасть в отчет. Каждый удовлетворяющий правилу запрос порождает вызов телеметрии. Возможна настройка отправки вызова как до выполнения запроса (data[before]), так и после (data[after]).
* REGISTER_SHUTDOWN_FUNCTION - позволяет определить функцию, выполняемую в момент завершения сценария. Код функции передается в поле data.
* GET_MEMORY_USAGE - получить количество памяти, выделенной php в момент вызова (см. memory_get_usage). obj[memory]=memory_get_usage().
* GET_LOADED_EXTENSIONS - получить список загруженых расширений php. obj[extensions]=array(/*extensions list*/);
* GET_INCLUDED_FILES - получить список включенных файлов php. obj[included_files]=array(/*files list*/);
* GET_DEFINED_CONSTANTS - получить список определенных констант. obj[constants]=array(/*files list*/);
* INI_GET_ALL - вывести значения переменных конфигурации php (ini_get_all).
* PHPINFO - получить html код выполнения phpinfo(): obj[phpinfo]=/*html*/.
* OK - продолжить выполнение.
* EXIT - прервать выполнение.
* DIE - прервать выполнение и вывести сообщение из data. (die($data));
* TDECODE - раскомментировать блоки кода отладки/тестирования. В поле data[key] можно передать ключ-индикатор раскомментируемых блоков кода. См. раздел TCODE далее.

TCODE\\
TCODE - специально сфоримрованные комментарии, содержащие код, который в рабочей версии программы выполняться не должен, однако может быть запущен при необходимости отладки или тестирования.\\
Пример:
[@
some code...
/*<!--{
echo "This is test var:".$test_var;
}-->*/
some code...
//<!--key{echo "This another debug block with key";}-->
@]
Т.о. если передать комманду {command:TDECODE}, будет раскомментирован первый блок,
Changed line 16 from:
Здесь:\\
to:
Здесь:
Changed lines 21-22 from:
Команды:\\
to:

Команды:
Added lines 1-27:
[[!модули]] [[!debug]]
!debug/telemetry.php
Модуль debug/telemetry.php помогает проводить отладку и тестирование кода удаленно или локально.\\
Модуль активизиурется, если глобальная переменная $NovaTelemetry==true. В процессе активации модуль выполняет запрос HTTP POST к URL, указанному в его настройках, и передает след. параметры:\\
obj[page]='ключ страницы на которой он запустился',
obj[_SERVER]=/*содержимое $_SERVER/*,
obj[_EVAL]=/*$_EVAL*/
В ответ можно отправить пустую строку или структуру json с командами тестирования или отладки, вида:
[@
[
{command:'Команда 1',data:{параметры команды 1},payload_init:'модификатор url для отправки отчета 2'},
...
{command:'Команда 2',data:{параметры команды 1},payload_init:'модификатор url для отправки отчета 2'},
]
@]
Здесь:\\
* "Команда" - имя команды, которую должен выполнить модуль (список команд см. ниже).
* {параметры команды 1} - описание параметров, доступных для каждой команды см. ниже.
* 'модификатор url для отправки отчета 2' - позволяет задать/изменить параметры запроса, передающего результаты выполнения команды.
Это может быть фрагмент URL вида "param1=value1&param2=value2" или хеш-массив {param1:value1,param2:value2}
Команды:\\
* GET_INCLUDES - Возвращает список всех слотов, загруженных на странице: obj['includes']=array('PLACE'=>array('inc_id'=>$inc_id,'module'=>$module),...).
* GET_REQUEST_DATA - Возвращает список всех слотов, загруженных на странице. obj['_GET']=$_GET,obj['_POST']=$_POST,obj['_COOKIE']=$_COOKIE,obj['_FILES']=$_FILES;
* INJECT_REQUEST_DATA - позволяет переопределить переменные данных выполняемого запроса значениями переданными в поле data: $_GET=$data['_GET'],$_POST=$data['_POST'],...
* GET_INCLUDE - возвращает данные слота с именем, переданным в поле data['place'].
* GET_PAGE - возвращает метаданные страницы.
* WATCH_INCLUDE - включает трассировку вызовов слота с именем в поле data['place']. При каждом выполнении слота могут передаваться аргументы его вызова, вывод, результат выполнения. Если слот не был определен на странице, но был его вызов, дополнительно будет возвращен признак no_include.
Edit - History - Print - Recent Changes - Search
Page last modified on June 28, 2015, at 09:09 PM EST