Агенты Битрикс не выполняются обычно по одной из трёх причин: они работают «на хитах», а посетителей на сайте мало; очередь заблокирована зависшим агентом; после переезда на другой хостинг не перенастроен запуск по cron. Симптомы всегда похожие: не уходят письма и рассылки, встал обмен с 1С, не обновляются выгрузки, не чистится кэш. Надёжное лечение одно - перевести выполнение агентов на cron и разобрать зависшие задачи.

Что такое агент. Это PHP-функция, которую Битрикс запускает по расписанию: рассылка писем, обмен с 1С, пересчёт данных, очистка журналов. Полный список - в админке: Настройки - Инструменты - Список агентов. Там же видно, когда агент запускался в последний раз и когда должен запуститься снова.

Почему агенты «на хитах» ненадёжны

По умолчанию Битрикс проверяет расписание агентов, когда на сайт заходит посетитель. Есть трафик - агенты тикают; ночью и в выходные - стоят. На малопосещаемом корпоративном сайте агент «раз в 15 минут» может реально выполняться раз в несколько часов, а тяжёлый агент вдобавок тормозит загрузку страницы тому посетителю, на чьём хите он запустился. Поэтому для боевых сайтов рекомендация одна: переводить агенты на cron - системный планировщик сервера, который не зависит от посещаемости.

Почему агенты Битрикс не выполняются: 5 причин

  • Нет хитов - агенты на хитах ждут посетителей, а их мало
  • Зависший агент - задача с признаком «выполняется» блокирует очередь остальных
  • Ошибка внутри агента - фатальный сбой кода обрывает обработку, причина видна в error_log
  • Cron не настроен или потерян при переезде - задания планировщика не переносятся вместе с файлами сайта
  • Сбитое время на сервере - дата следующего запуска оказывается в будущем, и агенты «ждут» часами

Как перевести агенты Битрикс на cron: пошагово

  1. Включите режим работы на кронеОтключите проверку агентов на хитах: в настройках главного модуля или константой BX_CRONTAB_SUPPORT в dbconn.php - зависит от версии платформы.
  2. Добавьте задание в планировщик хостингаРаз в минуту или раз в 5 минут запускать через php-cli файл bitrix/modules/main/tools/cron_events.php.
  3. Проверьте версию PHP в заданииИнтерпретатор командной строки на хостинге может отличаться от php сайта: указывайте в задании тот же, что использует сайт.
  4. Убедитесь, что расписание ожилоВ списке агентов даты следующего запуска должны обновляться каждые несколько минут.
  5. Разберите зависшие агентыЗадачи с датой запуска в прошлом и признаком выполнения: снимите признак, запустите вручную и смотрите error_log, если агент падает снова.
Подводные камни shared-хостинга. Минимальный интервал cron бывает 5-15 минут, а php командной строки - другой версии, чем у сайта. Если после настройки агенты так и стоят, проверьте, что задание вообще запускается (направьте вывод в лог-файл), и сверьте путь к php и к файлу cron_events.php - это два самых частых промаха.

Настроим агенты и фоновые задачи

Переведём агенты на cron, разберём зависшие, починим рассылки и обмен с 1С, поставим мониторинг. Сайт начнёт делать всё сам - как и задумано.

Навести порядок

Письма и рассылки не уходят: агенты или почта?

Если письма перестали уходить, вопрос всегда один: они не создаются или не доставляются? Загляните в очередь почтовых событий в админке. Очередь необработанных событий растёт - не работает агент отправки: чините по шагам выше. События обработаны, а писем нет - проблема в доставке: смотрите разборы о пропавших заявках и о письмах в спаме.

Совет. После каждого переезда сайта проверяйте три вещи, которых нет в архиве с файлами: задания cron, настройки отправки почты и SSL-сертификат. Именно эта тройка теряется при смене хостинга чаще всего.

Сколько стоит настройка и когда она окупается

Перевод агентов на cron с разбором зависших - 1-2 часа работы специалиста, 50-100 BYN. Окупается первым же невылетевшим обменом: одна «молчаливая» неделя без выгрузки заказов или обновления остатков стоит бизнесу заметно дороже. Для сайтов на абонентской поддержке настройка и мониторинг агентов входят в тариф.

Частые вопросы об агентах Битрикс

Как посмотреть, какие агенты есть на сайте и работают ли они?
Админка: Настройки - Инструменты - Список агентов. Смотрите колонки последнего и следующего запуска: если даты в прошлом и не обновляются - агенты стоят, начинайте диагностику.
Обмен с 1С перестал работать после переезда - это агенты?
Очень вероятно: задания cron не переезжают вместе с файлами. Проверьте планировщик на новом хостинге, пути к php и файлам, доступы обмена. Пять минут проверки экономят день переписки с хостером.
Можно ли удалить зависший агент?
Свой, созданный разработчиком - можно, если понимаете, что он делает. Системные агенты платформы удалять нельзя: снимайте признак выполнения и ищите причину сбоя в логах. Бездумное удаление ломает рассылки и обмены.
Чем агенты отличаются от заданий cron?
Агенты - планировщик внутри Битрикс, cron - планировщик самого сервера. Правильная связка: cron раз в минуту дёргает обработчик агентов, а всё расписание живёт в агентах. Тяжёлые задачи вроде больших обменов иногда выносят в отдельные cron-задания.

Фоновые задачи - это техника: она либо настроена и работает годами, либо «иногда само не срабатывает». Если сайт должен рассылать, обмениваться и обновляться без напоминаний - закажите доработку сайта в Alavir: настроим агенты, cron и мониторинг, покажем, как это контролировать. С 2013 года, 450+ проектов на 1С-Битрикс, смета бесплатно за 1 день.