Логирование выполнения агентов в 1С-Битрикс
Нашёл замечательную недокументированную возможность в битриксе. Можно писать в лог брейкпоинты (start, finish) работы выполнения агентов.
Применяем:
if (!defined('BX_AGENTS_LOG_FUNCTION')) {
define('BX_AGENTS_LOG_FUNCTION', 'OlegproAgentsLogFunction');
function OlegproAgentsLogFunction ($arAgent, $point){
@file_put_contents(
$_SERVER["DOCUMENT_ROOT"] . '/agents_executions_points.log',
(
PHP_EOL . date('d-m-Y H:i:s') . PHP_EOL .
print_r($point, 1) . PHP_EOL .
print_r($arAgent, 1) . PHP_EOL
),
FILE_APPEND
);
}
}
Этот кусок кода можно вставить, например в dbconn.php
И в файле agents_executions_points.log будет примерно такое:
04-02-2016 12:30:01
start
Array
(
[ID] => 15620
[NAME] => CCatalogExport::PreGenerateExport(3);
[AGENT_INTERVAL] => 3600
[IS_PERIOD] => N
[MODULE_ID] => catalog
)
04-02-2016 12:30:04
finish
Array
(
[ID] => 15620
[NAME] => CCatalogExport::PreGenerateExport(3);
[AGENT_INTERVAL] => 3600
[IS_PERIOD] => N
[MODULE_ID] => catalog
)
Похожие записи
В этой заметке я хочу рассказать о технологии LazyLoad или в простонародье «ленивая загрузка» в Битриксе. Метод, описанный мной, будет точно работать в компонентах catalog.section и news.list.
С выходом нового шаблона компонента sale.order.ajax на форумах битрикса разгораются возмущения и недомения. Мол, теперь код всего шаблона на JavaScript и как его кастомизировать непонятно. На самом деле да, код js-скрипта составляет почти семь тысяч строк. Сходу в таком количестве кода, даже хорошо написанного (к сожалению, битрикс этим не балует), соблюдая паттерны программирования, будет непросто.
В этой заметке я покажу способ, как можно кастомизировать основной скрипт логики шаблона оформления заказа (order_ajax.js), не прибегая к его правке. Что нам это даёт? Когда прилетят очередные обновления шаблона, мы просто заменим его и всё. Все наши кастомизации будут работать (в теории).
Итак, поехали!
Не буду писать про боль при интегации дефотного шаблона. Давайте просто напишем свой, с блекджеком и вот этим всем.
В заметке будет (интересного):
- построение древовидного массива без рекурсии (неограниченной вложенности)
- анонимная рекурсивная функция
- формирование урлов для секций супер-быстрым способом
- поработаем с сущностями инфоблока через ORM D7
Дальше много кода.
Добавить комментарий
4 комментария
Полезная фишка. Только, пожалуй, саму ф-ию стоит доработать. $_SERVER["DOCUMENT_ROOT"] - подходит для агентов на хитах, для крона надо поучить путь правиьный.
В dbconn.php похоже нельзя - картинки в капче отваливаются, в админке кое-где глюки с изображениями. При проверке системы говорит - лишние данные в системных файлах.
Если не сложно, - можно пример чтобы только нужных агентов писал?
Можно. Проверьте, что корректно вставили код, не оставив лишних пробелов после закрывающего теги php, например.
Благодарю! И да, - была пустая строка в конце dbconn.php, убрал - все в порядке.