Отладка при работе агентов

Инструкция актуальна если агенты модуля деактивируются или не выполняются вовсе.

Включаем логи БУС в .settings.php

Изначально нужно включить логирование в БУС. Для этого есть общая инструкция.

Ждем выполнения агентов

Теперь нам необходимо подождать, пока cron выполнит очередной раз наш файл с агентами. Если есть возможность, то можно запустить его вручную.

При деактивированных агентах следует их активировать и подождать.

Ищем ошибки

После того, как мы подождали 5-10 минут, переходим в файл лога и смотрим ошибки. В логе ошибок ищем наш файл cron_events.php, если есть такой, то смотрим, что пишет и в каком агенте произошла ошибка.

Проверяем ошибки глобально

Также рекомендуется проверить ошибки PHP и MySQL всего сайта, возможно там будет причина.

По коду ошибки ищем откуда она возникла и какая конечная функция у нее

Здесь необходимо проверить сами логи и убедиться, что ошибка исходит не из модуля, если это так, то напишите разработчику того решения, которое вызывает ошибку. Если ошибка модуля, то пишите на почту поддержки [email protected]

Пример ошибки в базе данных

2021-02-01 08:02:45 - Host: - UNCAUGHT_EXCEPTION - [Bitrix\Main\DB\SqlQueryException]
Mysql query error: (2006) MySQL server has gone away (400)
SELECT
`highloadblock_highload_block`.`ID` AS `ID`,
`highloadblock_highload_block`.`NAME` AS `NAME`,
`highloadblock_highload_block`.`TABLE_NAME` AS `TABLE_NAME`
FROM `b_hlblock_entity` `highloadblock_highload_block`
WHERE `highloadblock_highload_block`.`TABLE_NAME` = 'rbs_ms_stocks'
/home/m/site.test/public_html/bitrix/modules/main/lib/db/mysqliconnection.php:137
#0: Bitrix\Main\DB\MysqliConnection->queryInternal(string, array, NULL)
/home/m/site.test/public_html/bitrix/modules/main/lib/db/connection.php:330
#1: Bitrix\Main\DB\Connection->query(string)
/home/m/site.test/public_html/bitrix/modules/main/lib/orm/query/query.php:3398
#2: Bitrix\Main\ORM\Query\Query->query(string)
/home/m/site.test/public_html/bitrix/modules/main/lib/orm/query/query.php:825
#3: Bitrix\Main\ORM\Query\Query->exec()
/home/m/site.test/public_html/bitrix/modules/main/lib/orm/data/datamanager.php:500
#4: Bitrix\Main\ORM\Data\DataManager::getList(array)
/home/m/site.test/public_html/bitrix/modules/rbs.moyskladstocks/lib/hlcache/base.php:16
#5: Rbs\MoyskladStocks\HlCache\Base::getTableInfo(string)
/home/m/site.test/public_html/bitrix/modules/rbs.moyskladstocks/lib/hlcache/base.php:30
#6: Rbs\MoyskladStocks\HlCache\Base::getEntityDataClass(string)
/home/m/site.test/public_html/bitrix/modules/rbs.moyskladstocks/lib/hlcache/base.php:41
#7: Rbs\MoyskladStocks\HlCache\Base::isExsist(string)
/home/m/site.test/public_html/bitrix/modules/rbs.moyskladstocks/lib/hlcache/stocks.php:197
#8: Rbs\MoyskladStocks\HlCache\Stocks::isExsist()
/home/m/site.test/public_html/bitrix/modules/rbs.moyskladstocks/lib/agent.php:171
#9: Rbs\MoyskladStocks\Agent::stockCheck(integer, integer)
/home/m/site.test/public_html/bitrix/modules/main/classes/mysql/agent.php(164) : eval()'d code:1
#10: eval
/home/m/site.test/public_html/bitrix/modules/main/classes/mysql/agent.php:164
#11: CAgent::ExecuteAgents(string)
/home/m/site.test/public_html/bitrix/modules/main/classes/mysql/agent.php:42
#12: CAgent::CheckAgents()
/home/m/site.test/public_html/bitrix/php_interface/cron_events.php:16

В примере мы видим, что ошибка возникла в файле cron_events.php (последняя строка) и ошибка якобы в самом модуле, поскольку в логе присутствует путь до модуля. Однако в самом начале лога видно, что ошибка возникает из-за базы данных.

Решение:

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

  • В настройках модуля уменьшить количество выбираемых элементов.