SKY / WINGS / FIRST / TRACE /
ERRORS1

Если в процессе работы скрипта произошли ошибки, вся трассировка автоматически показывается разработчику, с выделением красным цветом мест с ошибками, трассировкой вызовов в местах с ошибками и контекстными переменными.

В SKY Framework имеется специальная схема для упрощенного программирования запросов AJAX. При возникновении ошибок, в течении обработки таких запросов, имеется специальный механизм принужденной визуализации, также как и для обычных запросов. Если свойство $sky->was_error в конце выполнения скрипта истинно, то выдача данных в STDOUT преобразуется в JSON кодированный массив (вывод предварительно буферизируется с помощью ob_start()) с ключем "catch_error" и присоединенными отладочными данными. Стандартный обработчик AJAX запросов (функция ajax() на javascript), детектирует такой вывод данных, и показывает всплывающее окно с отладочной информацией.

В файле main/debug.php имеется функция check_other(), предназначенная для специальных проверок с целью локализации ошибок. Ее запуск производится только, когда обнаружены другие ошибки, поэтому ее использование не снижает быстродействия скрипта даже в режиме отладки, когда ошибок нет. Тем не менее, ее использование полезно и позволяет локализовать типичные ошибки быстрее с помощью специальных проверок и использовать "нехороший", но эффективный стиль программирования в ядре SKY Framework.

Трассировка и детектирование ошибок, обычно всегда включена на рабочей станции разработчика (константа DEV равна true), и выключена в "боевом" режиме LIVE, на инсталляции в интернете. Это необходимо для повышения производительности и в целях секретности, во втором случае. Хотя, в принципе, включение отладки в режиме LIVE возможно. Это рекомендуется делать только во время инсталляции приложения или когда посещаемость веб-ресурса исключительно низкая, и делать это кратковременно. В примере ниже, нужно заменить ноль, на 1 или 2 или 3 (см. main/conf.php):

001
define('DEBUG', DEV ? 3 : 0);

Тем не менее, SKY Framework, позволяет делать отладку на production инсталляции LIVE, когда константа DEBUG равна нулю (основной режим отладки выключен) в следующих случаях:

1. Можно включить (или выключить) коллекционирование ошибок и логирование их в ячейку memory.tmemo.ID=4, с целью ее просмотра, в дальнейшем, в административном разделе. При этом все вызовы функции trace(), когда параметр $show_error равен true, будут трактоваться как ошибки. Если $show_error не равен тождественно true, это не будет трактоваться как ошибка, сбор ошибок, при таких вызовах, не будет происходить и не будет собираться трассировка.

2. Можно включить трассировку единичного клика в ячейку X-tracing (memory.tmemo.ID=1). При активации такого режима в админ разделе, необходимо успеть сделать нужный клик. После первого же клика, в таком режиме, переменная $sky->s_trace_prod, в конце трассировки автоматически сбрасывается в ноль и трассировка для всех последующих кликов не будет происходить.

3. Для консольных запусков скриптов, в том числе с точкой входа START равно "cron", нет особых требований по безопасности, в плане того, что посетителя сайта увидят трассировку и это как то поможет взломать сайт. Редкие запуски cron скриптов (в единицу времени), по сравнению с потенциально возможно частыми для фронтальных скриптов, не будут ощутимо использовать ресурсы сервера из-за дополнительно работающего функционала по сбору трассировки. Поэтому в SKY Framework имеется возможность включить (или выключить) трассировку всех консольных запусков скриптов в ячейку памяти X-tracing.

В файле main/cron.php (CRON layer) имеется функция lsql(), которую можно использовать вместо sql(), при этом выполненные SQL запросы (плюс время начала выполнения и обычно результат выполнения) будут записываться в ячейку памяти memory.tmemo.ID=2. В админ разделе, имеется возможность просматривать содержимое "Cron Log", также как и "ERROR Log" и "X-tracing".
опубликовано ENERGY - 10 Oct 2015 07:56 GMT
последнее редактирование - 10 Oct 2015 08:14 GMT
комментировать