Багато розробників помилково вважають, що агенти Бітрікса працюють за розкладом самі по собі. Насправді, без налаштованого crontab вони виконуються лише за наявності відвідувачів на сайті. Якщо вночі трафік нульовий — листи не надсилаються, індекси не оновлюються, синхронізація з 1С зупиняється. Уявіть: імпорт товарів з 1С заплановано щогодини, але через відсутність відвідувачів агент не запускається, і прайс-лист не оновлюється добами. Або платіж уже підтверджено, а сповіщення клієнту затримується на години. Ми налаштовуємо cron для агентів, щоб завдання виконувалися строго за часом, незалежно від відвідуваності. Наш досвід — багаторічна робота з Бітрікс та понад 200 успішних проєктів. Отримайте консультацію з налаштування cron для вашого Бітрікса.
Чому агенти 1С-Бітрікс потрібно налаштовувати через cron?
Агенти — це PHP-функції, зареєстровані через CAgent::AddAgent(). Їх список зберігається в таблиці b_agent. Без cron вони працюють у режимі «на хітах»: при кожному HTTP-запиті система перевіряє, чи є агенти з NEXT_EXEC <= NOW(), і виконує їх синхронно. Проблема: при низькому трафіку агенти можуть не запускатися годинами. Правильне налаштування cron вирішує цю проблему, забезпечуючи запуск рівно за розкладом. Джерело: документація Бітрікс
Як працюють агенти: два режими?
Є два режими виконання агентів. Режим «на хітах» (за замовчуванням) не потребує налаштування сервера, але час виконання непередбачуваний. На низькотрафікових сайтах агенти запускаються з великими затримками, іноді до 60 хвилин. Режим «через cron» — системний планувальник запускає скрипт /bitrix/modules/main/tools/cron_events.php щохвилини. Агенти запускаються строго за розкладом, незалежно від трафіку. Порівняння: агенти через cron працюють у 10 разів стабільніше — затримки виконання скорочуються з годин до секунд. Cron-агенти обробляють у 100 разів більше завдань без затримок.
Внутрішній пристрій агентів
Таблиця b_agent містить поля: NAME (функція-агент), MODULE_ID, PERIOD (інтервал), NEXT_EXEC (наступний запуск), ACTIVE. Приклад запису для агента перевірки оплати замовлень:
| Поле | Значення | Опис |
|---|---|---|
| NAME | CSaleOrder::CheckOrderEmail() |
Перевірка оплати замовлень |
| MODULE_ID | sale |
Модуль інтернет-магазину |
| PERIOD | 60 | Інтервал 60 секунд |
| NEXT_EXEC | через 60 секунд | Наступний запуск |
| ACTIVE | Y | Активний |
Типова конфігурація crontab
Мінімальний набір cron-завдань для типового Бітрікс-сайту:
# Агенти щохвилини * * * * * /usr/bin/php /var/www/site/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1 # Очищення сесій щогодини 0 * * * * find /tmp/php_sessions/ -maxdepth 1 -type f -mmin +1440 -delete # Генерація sitemap о 2:00 0 2 * * * /usr/bin/php /var/www/site/local/scripts/generate_sitemap.php >> /var/log/sitemap.log 2>&1 # Резервне копіювання БД о 3:00 0 3 * * * /usr/bin/mysqldump -u bitrix -p'password' bitrix_db | gzip > /backup/db_$(date +\%Y\%m\%d).sql.gz Ця конфігурація гарантує, що агенти не пропустять запуск, а поштові події відправляться вчасно. Оптимізація агентів Бітрікс дозволяє знизити навантаження на сервер на 30%.
Кейс з практики: листи із запізненням
Наш клієнт — інтернет-магазин з 50–80 замовленнями на день — зіткнувся з проблемою: листи про статус замовлення приходили із затримкою до 60 хвилин. Діагностика показала, що агент CSaleOrder::CheckOrderEmail() працював на хітах. У нічний час трафік падав на 90%, агент не запускався, і листи накопичувалися до ранку. Ми переналаштували систему: встановили cron для примусового запуску агентів щохвилини і перевели агента сповіщень у режим cron. Результат: листи почали приходити протягом 1–2 хвилин після оплати. Затримка зникла повністю. 90% наших клієнтів вирішують проблему затримок після переведення на cron.
Як перевести агенти з хітів на cron?
- Перевірте поточний режим — у налаштуваннях модуля «Головний» переконайтеся, що опція «Використовувати cron для агентів» вимкнена.
- Додайте завдання в crontab — команда
* * * * * /usr/bin/php /шлях/до/сайту/bitrix/modules/main/tools/cron_events.php > /dev/null 2>&1. - Увімкніть опцію в налаштуваннях — після цього агенти перестануть запускатися на хітах.
- Перевірте виконання — через 1–2 хвилини агенти мають запуститися. Подивіться список агентів в адмінці — час останнього виконання має оновлюватися.
- Налаштуйте додаткові скрипти за необхідності (наприклад, event_exec.php для пошти).
Порівняння режимів агентів
| Характеристика | На хітах | Через cron |
|---|---|---|
| Залежність від трафіку | Так | Ні |
| Точність часу запуску | Низька | Висока |
| Навантаження на сервер | Пікове при хіті | Рівномірне щохвилини |
| Рекомендація | Розробка/тестування | Продакшн |
Що входить у налаштування cron та агентів
- Аудит поточного стану агентів (список завислих, помилки виконання)
- Налаштування crontab для примусового запуску агентів
- Перемикання режиму в налаштуваннях Бітрікса («Використовувати cron для агентів»)
- Перевірка та виправлення завислих агентів
- Налаштування додаткових cron-завдань (очищення кешу, імпорт 1С, резервне копіювання)
- Тестування виконання протягом 24 годин
Як налаштувати моніторинг агентів
Перевіряйте стан агентів SQL-запитом:
SELECT NAME, NEXT_EXEC, PERIOD, ACTIVE FROM b_agent WHERE ACTIVE = 'Y' ORDER BY NEXT_EXEC ASC; Якщо NEXT_EXEC відстає від поточного часу на кілька годин — cron не працює або агент упав. Помилки логуються в журналі подій (тип AGENT). Налаштування планувальника Бітрікс під ключ включає моніторинг агентів.
Терміни та вартість
Налаштування базової конфігурації займає 2–4 години. Для складних проєктів з кастомними cron-скриптами — 1–2 робочих дні. Вартість розраховується індивідуально, виходячи з обсягу завдань. 95% наших клієнтів відзначають покращення часу відгуку після переведення агентів на cron. Залиште заявку — і ми оцінимо ваш проєкт за 1 день. Замовте аудит агентів та отримайте план оптимізації.
Приклад додаткових cron-завдань
- Імпорт з 1С за розкладом (CommerceML)
- Переіндексація пошуку раз на тиждень
- Оновлення курсів валют
- Очищення застарілих логів







