Налаштування кронтабів та агентів 1С-Бітрікс
Налаштування кронтабів та агентів 1С-Бітрікс
Агент у 1С-Бітрікс — це PHP-функція, яка має виконуватися за розкладом. Коли агенти працюють «на хітах» (тобто запускаються при кожному HTTP-запиті), на проєкті з низьким трафіком задачі можуть не виконуватися годинами. Чому? Тому що агент на хіті чекає наступного відвідувача. Вночі ніхто не заходить — розсилка не відправляється, індекс пошуку не оновлюється, залишки не синхронізуються.
Як працюють агенти у Бітріксі
Агенти зберігаються в таблиці b_agent. Кожен запис містить: ім'я функції-агента, період запуску (PERIOD), дату наступного запуску (NEXT_EXEC), прапор активності.
Два режими роботи:
Режим «на хітах». При кожному HTTP-запиті Бітрікс перевіряє таблицю b_agent — чи є агенти, у яких NEXT_EXEC <= NOW(). Якщо є — запускає в рамках поточного HTTP-запиту. Плюс: працює без налаштування сервера. Мінус: немає гарантії часу виконання, збільшує час відповіді сторінки, на низькотрафікових сайтах агенти виконуються із великими затримками.
Режим «через cron». Агенти запускаються через системний cron незалежно від HTTP-трафіку. Скрипт /bitrix/modules/main/tools/agent_exec.php викликається кронтабом, перевіряє b_agent і запускає прострочені агенти. Це правильний спосіб для будь-якого продакшн-проєкту.
Налаштування cron для агентів
Стандартний запис у crontab для запуску агентів щохвилини:
* * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/agent_exec.php > /dev/null 2>&1
Додатково — для гарантії виконання агентів, прив'язаних до точного часу (наприклад, відкладене відправлення email):
*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/event_exec.php > /dev/null 2>&1
event_exec.php — обробник черги поштових подій. Без нього відправлення email із черги залежить від хітів.
У налаштуваннях Бітрікса потрібно перемкнути режим: «Налаштування → Налаштування модулів → Головний модуль → Використовувати cron для агентів» — увімкнути. Після цього агенти перестають запускатися на хітах.
Кастомні cron-задачі
Окрім агентів Бітрікса, на продакшн-сервері часто потрібні власні cron-задачі:
Очищення кешу за розкладом. Якщо кеш не інвалідується автоматично:
0 4 * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/clear_cache.php > /dev/null 2>&1
Імпорт із 1С. Якщо обмін не через push, а за розкладом — скрипт запуску CommerceML-імпорту:
0 */2 * * * /usr/bin/php -f /home/bitrix/www/local/php_interface/import_1c.php >> /var/log/bitrix_import.log 2>&1
Переіндексація пошуку.
0 2 * * 0 /usr/bin/php -f /home/bitrix/www/bitrix/modules/search/tools/index.php > /dev/null 2>&1
Моніторинг агентів
Для перевірки стану агентів:
SELECT NAME, NEXT_EXEC, PERIOD, ACTIVE
FROM b_agent
WHERE ACTIVE = 'Y'
ORDER BY NEXT_EXEC ASC;
Агенти з NEXT_EXEC у минулому на кілька годин — ознака того, що cron не працює або агент впав із помилкою. Помилки агентів записуються в лог: «Налаштування → Журнал подій» (тип події AGENT).
Терміни
Налаштування cron для агентів та базових задач — 2–4 години: діагностика поточного режиму, налаштування crontab, перемикання режиму у Бітріксі, перевірка виконання. Для складних cron-сценаріїв із моніторингом — 1–2 робочі дні.







