Меню Закрыть

Агенты на cron битрикс

Содержание

Задача: перевести все агенты на крон (Cron)

Решение: создаем скрипт [корневая директория сайта]/local/php_interface/cron.php с таким содержимым:

Далее нужно установить скрипт на запуск кроном.

Например, для виртуальной машины Bitrix это делается так: в файл /etc/crontab нужно добавить одну строчку

Рассмотрим подробнее некоторые моменты.

1. Скрипт.

1.1. Задав константе BX_CRONTAB_SUPPORT значение false мы получаем запуск как "периодических" агентов так и "не периодических".

За это также отвечает настройка главного модуля agents_use_crontab , поэтому нам нужно удостоверится что она установлена в значение N .

1.2. За запуск агентов на "хитах" отвечает настройка главного модуля check_agents ее нужно установить в значение N . Если ее не отключить то "периодические" агенты будут также запускаться на хитах.

1.3. define(‘NO_AGENT_CHECK’, false); заставляет агенты запускаться, не давая переопределить константу NO_AGENT_CHECK .

1.4. Скрипт также выполняет отправку почты и рассылок, за это отвечают строчки:

2. Крон

  • * * * * * — периодичность запуска (одна минута)
  • bitrix — имя пользователя от которого прозводится запуск
  • nice — комманда которая делает процесс "хорошим" по отношении к другим процессам, понижая его приоритет при распределении ресурсов.
  • /usr/bin/php — путь к php интерпретатору
  • /home/bitrix/www/ — корневая директория сайта
  • local/php_interface/cron.php — путь к скрипту относительно корневой директории сайта
  • > /dev/null 2>&1 — перенаправление вывода
  • /dev/null — сюда направляется вывод (в никуда)
  • 2>&1 — ошибки перенаправляются туда же

Выводы

После этих действий агенты будут проверяться каждую минуту, nice не даст им забрать все ресурсы, таким образом тяжеловесный агент не "положит" сайт. Кроме того скрипт сам устанавливает нужные настройки, все что нужно сделать это поставить его на регулярное выполнение с помощью утилиты cron.

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

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

Читайте также:  Скользкий деление на слоги

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

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

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% случаев можно не обращать на них внимания.

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

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

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

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

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

Читайте также:  Intel r h55 express chipset lpc interface

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

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

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

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

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

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

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

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

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.