Bitrix агенты на крон

Bitrix агенты на крон

Руководство по настройке агентов Bitrix

Агенты — это функционал 1С-Битрикс, который позволяет автоматизировать регулярно выполняемые процессы.
Агент представляет собой запись в базе данных сайта, содержащую информацию о запускаемом в определенный момент времени.

Агенты по умолчанию настроены запускаться по Событиям, то есть при любой пользовательской активности 1С-Битрикс анализирует список агентов и запускает те из них, время запуска которых наступило.

Для того, чтобы скрипты начали работать по расписанию, агенты необходимо перевести на Cron.

Для начала полностью отключим выполнение агентов на хите. Для этого выполним следующую команду в php консоли:

В результате выполнения должно быть "NN".

После этого убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:

И добавляем в этот файл:

Создаем файл проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php:

И добавляем данный скрипт в cron:

После этого все агенты и отправка системных событий будут обрабатывается из под cron, раз в 5 минут.

  • Примечание: Время выполнения можно скорректировать в соответствие с проектом. Кроме того, есть возможность через установку большого значения mail_event_bulk сделать более "быстрой" доставку почтовых уведомлений. Установка проверки раз в минуту вместе с отправкой за раз 100 сообщений, сделает для пользователей незаметным данную задержку.

Чтобы не увеличивалась очередь отправки почтовых сообщений, рекомендуется изменить параметр отвечающий за количество почтовых событий обрабатываемых за раз. Для этого выполняем в php консоли следующую команду:

Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.

В прошлый раз мы дали инструкцию по настройке почты на виртуальной машине «Битрикс» и остановились на том, что почтовые события необходимо настроить как агенты Cron. Расскажем, как именно:

Читайте также:  Huawei p smart 32gb днс

1. Запустите выполнение периодических агентов

Перейдя по адресу Настройки > Инструменты > Командная PHP-строка, выполните команду:

COption::SetOptionString("main", "agents_use_crontab", "Y");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

Подтверждение «Y» означает, что выполняются только периодические хиты

Теперь на странице Настройки > Настройки продукта > Агенты настройте показ колонки Периодический. Выберите в ней почтовые агенты и проверьте, выставлены ли флаги «периодический». Если нет, поставьте флаги.

Добавьте в cron команду

/usr/bin/php -f /var/www/bitrix/modules/main/tools/cron_events.php

и установите почтовым агентам периодичность в 1 минуту в формате

2. Общее решение для запуска всех агентов из-под cron

Начнем с того, что полностью отключим все агенты на хите. Для этого в PHP-консоли Настройки > Инструменты > Командная PHP-строка выполним команду

COption::SetOptionString("main", "agents_use_crontab", "N");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

COption::SetOptionString("main", "check_agents", "N");
echo COption::GetOptionString("main", "check_agents", "Y");

в ответе должно быть сообщение «NN».

Теперь находим файл /bitrix/php_interface/dbconn.php

Убираем в нем определение двух переменных:

define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);

и добавляем условие

Наконец, создадим файл проверки проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php следующего содержания:

И добавляем этот скрипт в cron:

*/5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php

3. Не забудьте увеличить количество обрабатываемых за раз событий

Если этого не сделать, то будет образовываться очередь из неотправленных сообщений

Открываем PHP-консоль Настройки > Инструменты > Командная PHP-строка и выполним команду

COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");

Перевод агентов на крон, окончательная попытка

Уже было несколько попыток перевести агенты на крон. В одной попытке не затрагивались периодические, в другой попытке подмешивалась еще и отправка почты. В этой попытке мы остановимся исключительно на всех агентах.

Немного ликбеза. Что такое агент в терминологии Битрикс? Это метод или функция, который выполняет определенную функцию по расписанию. Например, импорт/экспорт, очистка данных, либо еще какие-то действия. Если такие агенты не переводить на крон (планировщик), то они будут выполняться на хитах пользователя. Это означает, что последний будет ждать выполнения агента, что увеличит время выполнения страницы, и отрицательно скажется на отношении пользователя к сайту. Поэтому, данная инструкция обязательна к применению.

Читайте также:  Check connection cable no bootable device

Итак, порядок действий:

1. Из /bitrix/php_interface/dbconn.php убрать любые упоминания:

  • BX_CRONTAB
  • BX_CRONTAB_SUPPORT
  • NO_AGENT_CHECK
  • DisableEventsCheck

2. В командной PHP-строке в админке выполнить:

3. Создать файл cron_events.php, и положить его в /bitrix/php_interface/, такого содержания:

CAgent::CheckAgents() вызывается два раза специально, чтобы выполнить как периодические агенты, так и не периодические.
Если вам требуется, чтобы данный файл отвечал еще и за бекап, откомментируйте последнюю строчку.

В следующих статьях мы рассмотрим как добавлять задачу крон на исполнение данного файла в различных панелях управления.

PS: Если вам нужно перевести на крон только НЕпериодические агенты, следует воспользоваться данным курсом . Отличия в подходах довольно специфичные и в 90% случаев можно не обращать на них внимания.

Ссылка на основную публикацию
Adblock detector