Использование объектов Битрикс в CRON
Часто в крупных проектах возникает ситуация когда требуется часть логики сайта, связанную с исполнением периодических и продолжительных функций выполнять через планировщик задач. В UNIX-средах таким планировщиком является cron. В этой небольшой статье я покажу как это можно сделать на небольшом примере.
Без использования объектов Битрикс
Конечно, если вам нужно сделать какие-то действия, например почистить определенную папку, то подключать и использовать объекты Битрикс не требуется и для такого случая можно просто сделать скрипт такого вида:
// файл cronscript.php
#!/usr/bin/php
и добавить в крон такую строку (если вам нужно выполнять скрипт в 0:00 каждый день):
0 0 * * * [путь_к_файлу]/cronscript.php >> [путь_к_файлу]/cronscript.log
Не забудьте сделать исполняемым файл cronscript.php командой chmod +x cronscript.php .
С использованием объектов Битрикс
Но если вам требуется использовать объекты битрикс, например вам нужно удалить старые капчи, которые накопились за сутки, то нужно подключить ядро Битрикс. Сделаем это:
// файл cronscript.php
#!/usr/bin/php
$_SERVER[«DOCUMENT_ROOT»] = «/home/hosting/www»;
$DOCUMENT_ROOT = $_SERVER[«DOCUMENT_ROOT»];
define(«NO_KEEP_STATISTIC», true);
define(«NOT_CHECK_PERMISSIONS», true);
//ваш код…
CCaptchaAgent::DeleteOldCaptcha(86400);
Из кода видно, что вам будет нужно определить DOCUMENT_ROOT, где находится файлы вашего сайта на Битрикс и после этого подключить ядро. Этот скрипт точно также нужно сделать исполняемым и сделать аналогичную запись в cron.
Авто-запуск Бизнес-Процессов по расписанию (Cron)
Оформите подписку Битрикс24 Маркет Плюс и используйте более 3000 полезных приложений, представленных в каталоге.
Авто-запуск Бизнес-Процессов по расписанию (Cron)
АйТи-Солюшн
Установить
Информация
Опубликовано : 17.06.2021
Установок : 379
Другие приложения разработчика

Все телефоны в одном формате
По подписке

Курсы валют
По подписке
![]()
База знаний и тестирование
Выполнение агентов на Cron в Bitrix
В этой статье мы расскажем, что такое агенты, а также как работает выполнение агентов на Cron в Bitrix.
Что такое агенты
Агенты — это функционал CMS Bitrix, с помощью которого можно запускать функции PHP с заданным промежутком времени. Этот функционал представлен как запись в базе данных. Каждая запись содержит:
- код, который нужно запустить,
- дату и время запуска кода,
- промежуток между запусками — для периодических агентов, которые запускаются спустя заданный промежуток времени.
Как работают агенты
Чтобы понять, как работают агенты в Bitrix, нужно разобраться, что такое хит и Cron-задания. Есть два алгоритма для запуска агентов:
- Хиты. Хит — это одна загрузка страницы. Когда пользователь заходит на страницу или кликает по ссылке, в CMS создаётся хит. Также он создаётся, если пользователь перезагружает страницу или переходит на несуществующую страницу. Каждый раз, когда создается хит, Bitrix обращается ко всем агентам. CMS выполняет их, если закончился заданный промежуток времени;
- Cron-задания. Такие задания тоже выполняются с заданной периодичностью, но не зависят от хитов. Подробнее о работе Cron-заданий читайте в статье Планировщик Cron.
Если агент выполняется более 10 секунд, страницы сайта будут долго открываться. Поэтому иногда возникает потребность перевести их с хитов на Cron. Это позволит разгрузить CMS и ускорить загрузку страниц.
Как перевести агенты на Cron
Оптимальный вариант перевода агентов на Cron — модуль «Агенты на кроне». Его плюс в том, что на Cron переносятся все агенты, кроме почтовых. Это значит, что почта продолжит работать без задержек и дополнительных настроек.
Чтобы установить модуль:

Перейдите на вкладку Администрирование:

Выберите Marketplace — Каталог решений: Cron events

В поисковой строке наберите «Агенты на кроне» и нажмите Enter. Затем найдите модуль на странице и нажмите Установить:

Отметьте модуль галочкой и кликните Загрузить:

Примите лицензионное соглашение и условия конфиденциальности. После этого нажмите Применить:

Перейдите на вкладку Установка обновлений и нажмите Установить:

Если установка прошла корректно, вы увидите сообщение:

Выберите блок Настройки. Затем перейдите в раздел Настройки продукта — Настройки модулей:

Выберите модуль Агенты на кроне из выпадающего списка. Отметьте пункт «Все агенты выполняются на кроне, а на хитах пользователей не выполняются». Затем нажмите Сохранить:
После установки модуля необходимо выполнить настройку агентов на Cron. Для этого:
Подключитесь к хостингу или серверу по SSH.
Откройте файл dbconn.php. Для этого выполните одну из команд:
sudo nano ~/domain.ru/bitrix/php_interface/dbconn.php vi ~/domain.ru/bitrix/php_interface/dbconn.php
Вместо ~/domain.ru/ укажите путь к корневой директории сайта.
Добавьте строку:
define('BX_CRONTAB_SUPPORT', true);
Запуск агентов 1С Битрикс по крону (cron)
Для запуска агентов 1С Битрикс требуется установка команды планировщика (cron) в панели управления хостингом.
Обратите внимание, что для настройки планировщика для агентов не требуется SSH.

Далее необходимо добавить новый планировщик (cron):
Включите экспертный режим и добавьте следующие значения:

*/5 – минуты
* — часы
* — дни месяцев
* — месяцы
* — дни недели
При этом, тип команды зависит от выбранной версии PHP для сайта (см. раздел «www-домены» в панели хостинга).
Частота запуска CRON должна быть не чаще, чем 1 раз в 3-5 минут во избежании зависания процессов.
Примеры команд запуска агентов (скриптов) по крону для разных версий PHP:
/opt/php53/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php54/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php55/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php56/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php70/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php71/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php72/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php73/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php74/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
/opt/php80/bin/php -f /var/www/ваш_логин/data/www/ваш_сайт/bitrix/modules/main/tools/cron_events.php
Обратите внимание:
Стандартный путь до скрипта запуска агентов может быть изменен на следующий: /var/www/ваш_логин/data/www/ваш_сайт/bitrix/php_interface/cron_events.php
В файле /bitrix/php_interface/dbconn.php требуется убрать любые упоминанаия нижеследующих констант:
BX_CRONTABD BX_CRONTAB_SUPPORT NO_AGENT_CHECK DisableEventsCheck
Добавить строку в этом же файле:
define("BX_CRONTAB_SUPPORT", true); define("BX_CRONTAB", true);
Если после изменений при проверке состояния битрикс-сайта будет отображаться ошибка «Определена константа BX_CRONTAB_SUPPORT в /bitrix/php_interface/dbconn.php, при этом должен быть настроен вызов агентов на cron.» то в этом случае требуется заменить строки:
define("BX_CRONTAB_SUPPORT", true); define("BX_CRONTAB", true);
if(!(defined("CHK_EVENT") && CHK_EVENT===true)) define("BX_CRONTAB_SUPPORT", true);
В некоторых случаях требуется создание файла cron_events.php Убедитесь, что в файловой системе есть файл /bitrix/php_interface/cron_events.php Если он отсутствует, то скачайте и разместите файл в указанной директории.
Обратите внимание:
Установка слишком частого выполнения заданий CRON (планировщика) может вызывать сбои в работе сайта и блокировку выполняющихся процессов. В случае, если на сайте выполняются процессы требующие время на выполнение более 2 минут, то при установке ежеминутного запуска CRON (планировщика) могут появляться очереди запросов к базе данных. Накопление запросов означает, что скрипт незавершает свой процесс и зависает. Рекомендуемый интервал выполнения запуска CRON не чаще 15 минут.
Концепция и все материалы с сайта btrxboost.com включающие в себя текстовую, графическую, видео, аудио и маркетинговую информацию, защищены российским и международным законодательством. В соответствии с соглашением об охране авторских прав и интеллектуальной собственности (ст. №1259, №1260, гл. 70 “Авторское право” ГК РФ от 18.12.2006 № 230-ФЗ) и согласно сертификату собственности авторских прав на информационные материалы RID 07N-4M-48 от 12.08.2012, а также сертификата DMCA id: f25cb914-aba8-4988-a116-13afb399bba2 от 21.06.2019.
В случае нарушений данных правил, применяются следующие меры: подача официального заявления в судебные органы в т.ч. с эскалацией запроса хостинг-провайдеру на котором расположен сайт-нарушитель, а также подача запроса на исключение сайта-нарушителя из поисковых систем согласно “Online Copyright Infringement Liability Limitation Act” по ч. II, раздел 512 к закону об авторском праве по DMCA.