⟵ сюдатуда ⟶
  • Отладка
  • Глобальные ошибки
  • Нехватка оперативной памяти
  • Включение отладки
  • Чтение отладочных логов
  • Доступе через кнопку Лог
  • Код
  • Код действия
  • Последовательная запись действий
  • Код селекта
  • Форматирование
  • Пересчеты и селекты
  • Время расчета полей
  • Оптимизация
  • Статья в работе
  • Документация

    Отладка и оптимизация

    Отладка

    Глобальные ошибки

    Нехватка оперативной памяти

    Если вместо загрузки страницы вы столкнулись с белым экраном содержащим такую ошибку:

    Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes)
    

    Разрешите на сервере больше оперативной памяти для PHP.

    Включение отладки

    Для того, чтобы понять почему не работает код, обычно хватает просмотра логов его выполнения.

    Тк логи потребляют большое количество серверной мощности на расчет, являются достаточно объемными и передаются в браузер вместе с содержимым страниц, то их включение разделено на секции:

    • Код — отслеживание секции вычисления значений полей.

    • Код действия — отслуживание секции выполнения действий.

    • Селекты — отслеживание секции расчета отображений селектов.

    • Форматирование — отслуживанивание секции форматирования.

    • Пересчеты и селекты — показывает количество пересчетов таблиц по результатам выполнения кодов действий и автоматических взаимосвязей, а также обращениях, выполняемых в процессе работы функций. Просмотр данных — по кнопке Лог. Полезно при непонятном поведении циклов из множества таблиц.

    • Время расчета полей — записывает время расчета полей по различным секциям кода, для оптимизации быстродействия больших таблиц. Результат работы вызывается при клике на иконку таблицы рядом с галочкой после обновления таблицы.

    Рекомендуется одновременно включать не больше двух!

    В файле настроек Conf.php можно включить логирование SQL-запросов, ошибок и выполнения cron-скриптов. В этом месте нужно быть аккуратнее — SQL-логи могут достигать очень большого размера.

    Включение отладки

    Логи расчетов нигде не хранятся, отдаются в веб-интерфейс вместе с таблицей при изменении таблицы.

    После обновления страницы мигание кнопки Лог покажет, что значения логов были изменены. Не рекомендуется включать все логи сразу — в большой таблице скорее всего сработает ограничение на память процесса PHP.

    Логи доступны по кнопке Лог в правом верхнем углу таблицы. Для просмотра логов по конкретной ячейке возможно вызвать окно отладки из панельки по правой кнопке мыши.

    Вызов окна отладки из панельки

    Чтение отладочных логов

    В логе можно увидеть последовательность выполнения строк кода, их результаты, входящие параметры и используемые переменные. Также можно выяснить на каком этапе возникла ошибка. Ошибка всплывает к пусковой строке кода.

    Доступе через кнопку Лог

    Придоступе к логам через кнопку Лог поля разделены на Строчную часть и поля вне ее. Внутри строчной части адресация осуществляется по id строки.

    Адресация в кнопке ЛОГ

    Код

    example1: if(condition: $otkl > 0; then: $otkl; else: 0)
    otkl: #norma - #otrabotano_chasov
    

    Обозначения:

    • Ванд — секция кода и ее итоговое значение.

    • Ког — часть исполняемого кода без пробелов и комментариев.

    • Диез — параметр и его значение.

    • Рука — обозначает секцию кода вычисленную и зафиксированную в предыдущей операции.

    • Дробь — вывод значений списков. Выводятся частично.

    Код

    Код действия

    example2: while(preaction: $count; action: $set1)
    count: if(condition: $#nfv < #so_sklada; then: $err)
    err: errorExeption(text: "КОЛИЧЕСТОВ НЕ МОЖЕТ БЫТЬ МЕНЬШЕ, ЧЕМ ВЗЯТО СО СКЛАДА — ОТМЕНИТЕ БРОНЬ СКЛАДА")
    set1: set(table: 'proizvodstvo'; field: 'kolichestvo' = #kolichestvo; where: 'privyazka' = #id)
    

    Обозначения: аналогично коду.

    Код действия

    Последовательная запись действий

    При включенном логгировании кодов действий ведется последовательная запись коды действий вызываемых совершаемыми на странице действиями.

    В логе действия помещаются в секции Изменение, Добавление, Удаление в хронологической последовательности сверху-вниз.

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

    = : while(action: $recalc; action: $clear)
    recalc: reCalculate(table: 'tables';  where: 'id'=$ids)
    ids: listAdd(list: $diff1; list: $diff2)
    clear: clear(table: $#ntn; field: 'tree_off'; where: 'id'=#id)
    
    diff1: listMinus(list: #tree_off; list: #old.tree_off)
    diff2: listMinus(list: #old.tree_off; list: #tree_off)
    

    Запись действий

    Код селекта

    example3: selectRowListForSelect(table: 'statusy_zakazov_sport'; field: 'status'; where: 'id' = $list)
    list: listcreate(item: 1; item: 7; item: 8; item: 9; item: 10; item: 11; item: 12; item: 13; item: 14; item: 15)
    

    Обозначения: аналогично коду.

    Код селекта

    Форматирование

    f1=: setformat(bold: true)
    f2=: setformat(condition: #cvet = ""; background: "NavajoWhite")
    f3=: setformat(condition: #cvet = 40; background: "yellow")
    f4=: setFormat(condition: $#nr = 7; condition: #status != $list2; block: true)
    list2: listCreate(item: 10; item: ""; item: 12)
    

    Обозначения: аналогично коду.

    Форматирование

    Пересчеты и селекты

    Показывает пересчеты таблиц,

    • Ресайкл — показывает пересчет таблицы и количество раз пересчета за цикл (если 1, то не показывается).

    • Часы — время пересчета таблицы.

    • Стопка — объем оперативной памяти требуемой для расчета.

    • Бутерброд — показывает к каким таблицам были выполнены [селекты][331] и в каком количестве.

    Пересчеты и селекты

    Время расчета полей

    Используется для отладки быстродействия и нагрузки.

    • Таблица — таблица в которой измеряется время выпонения кодов полей.

    • field — name полей.

    • type — тип выполнения операции:

    • Общее время выполнения расчета — общее время выполнения кодов по типу в этом поле в секундах.

    • Количество раз выполнения — количество раз, которое был выполнен код. Для хедера и футера для поля это будет 1 раз, для строчной части — по количество строк.

    Время расчета полей

    Оптимизация

    Статья в работе

    Ориентировачный выход — Декабрь 2019 г.

    ⟵ сюда туда ⟶