В этой статье мы расскажем, что такое агенты, а также как работает выполнение агентов на Cron в Bitrix.
Что такое агенты
Агенты — это функционал CMS Bitrix, с помощью которого можно запускать функции PHP с заданным промежутком времени. Этот функционал представлен как запись в базе данных. Каждая запись содержит:
- код, который нужно запустить,
- дату и время запуска кода,
- промежуток между запусками — для периодических агентов, которые запускаются спустя заданный промежуток времени.
Как работают агенты
Чтобы понять, как работают агенты в Bitrix, нужно разобраться, что такое хит и Cron-задания. Есть два алгоритма для запуска агентов:
- Хиты. Хит — это одна загрузка страницы. Когда пользователь заходит на страницу или кликает по ссылке, в CMS создаётся хит. Также он создаётся, если пользователь перезагружает страницу или переходит на несуществующую страницу. Каждый раз, когда создается хит, Bitrix обращается ко всем агентам. CMS выполняет их, если закончился заданный промежуток времени;
- Cron-задания. Такие задания тоже выполняются с заданной периодичностью, но не зависят от хитов. Подробнее о работе Cron-заданий читайте в статье Планировщик Cron.
Если агент выполняется более 10 секунд, страницы сайта будут долго открываться. Поэтому иногда возникает потребность перевести их с хитов на Cron. Это позволит разгрузить CMS и ускорить загрузку страниц.
Как перевести агенты на Cron
Оптимальный вариант перевода агентов на Cron — модуль «Агенты на кроне». Его плюс в том, что на Cron переносятся все агенты, кроме почтовых. Это значит, что почта продолжит работать без задержек и дополнительных настроек.
Чтобы установить модуль:
- 1 Войдите в админку.
-
2
Перейдите на вкладку Администрирование:
-
3
Выберите Marketplace — Каталог решений:
Cron events
-
4
В поисковой строке наберите «Агенты на кроне» и нажмите Enter. Затем найдите модуль на странице и нажмите Установить:
-
5
Отметьте модуль галочкой и кликните Загрузить:
-
6
Примите лицензионное соглашение и условия конфиденциальности. После этого нажмите Применить:
-
7
Перейдите на вкладку Установка обновлений и нажмите Установить:
-
8
Если установка прошла корректно, вы увидите сообщение:
-
9
Выберите блок Настройки. Затем перейдите в раздел Настройки продукта — Настройки модулей:
-
10
Выберите модуль Агенты на кроне из выпадающего списка. Отметьте пункт «Все агенты выполняются на кроне, а на хитах пользователей не выполняются». Затем нажмите Сохранить:
После установки модуля необходимо выполнить настройку агентов на Cron. Для этого:
- 1 Подключитесь к хостингу или серверу по SSH.
-
2
Откройте файл dbconn.php. Для этого выполните одну из команд:
sudo nano ~/domain.ru/bitrix/php_interface/dbconn.php vi ~/domain.ru/bitrix/php_interface/dbconn.php
Вместо ~/domain.ru/ укажите путь к корневой директории сайта.
-
3
Добавьте строку:
define('BX_CRONTAB_SUPPORT', true);
Затем сохраните изменения.
-
4
Откройте файл Cron-заданий:
crontab -e
-
5
Добавьте необходимое задание в следующем формате:
*/1 * * * * php ~/domain.ru/bitrix/modules/main/tools/cron_events.php
Вместо ~/domain.ru/bitrix/modules/main/tools/cron_events.php укажите путь к файлу задания, которое нужно исполнять в соответствии с графиком.
В примере указан относительный путь к файлу задания. Если он не сработал, укажите абсолютный путь к файлу по инструкции.
График выполнения задания записан в следующем формате:
минута час день месяца месяц день недели
В этом примере указано, что задание нужно исполнять каждую минуту каждого часа:
*/1 * * * *
По необходимости вы можете настроить собственный график.
После добавления всех заданий сохраните изменения.
Готово, вы перенесли агенты на Cron.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊