Cron в Битриксе

Антон Чуркин
Антон Чуркин PHP программист
10.11.2021

Для запуска функций в заданное время, в битриксе существует технология Агентов.

По умолчанию, агенты выполняются на хитах, то есть при каждом посещении сайта пользователем, битрикс проверяет, какие агенты пора запускать и выполняет их. У этого способа есть два недостатка — во первых, при нерегулярном посещении агенты могут запускаться позже чем нужно. Во вторых — тяжёлые агенты могут затормозить работу сайта. От обоих недостатков можно избавиться, если запускать агенты с помощью 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);

И заменяем их на:

if(!(defined("CHK_EVENT") && CHK_EVENT===true)) define("BX_CRONTAB_SUPPORT", true);

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

<?

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");

$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);

define("NOT_CHECK_PERMISSIONS",true);

define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);

@ignore_user_abort(true);

CAgent::CheckAgents();

define("BX_CRONTAB_SUPPORT", true);

define("BX_CRONTAB", true);

CEvent::CheckEvents();

if (CModule::IncludeModule("subscribe"))

{

      $cPosting = new CPosting;

      $cPosting->AutoSend();

}

?>

Читайте далее
Разработка
Как провести нагрузочное тестирование: по шагам на примере сайта Alto
Как провести нагрузочное тестирование сайта
Разработка
Как провести автоматическое тестирование сайта: кейсы, что нужно
Как провести автоматическое тестирование сайта
Разработка
Настраиваем web-сервера, nginx и apache на одном сервере
Настраиваем веб-сервер — nginx и apache на одном сервере
Разработка
Инструкция по работе с Gulp: установка, создание проекта, основные команды
Что такое Gulp: инструкция по работе с Gulp
Разработка
Подключение JS в Bitrix: все способы в системе управления 1С-Битрикс
Как подключить JS в Bitrix
Разработка
Резервное копирование и восстановление сайта на 1С-Битрикс: все способы восстановления и создания бэкапа
Резервное копирование и восстановление сайта на 1С-Битрикс
Разработка
Как перенести сайта Битрикс на другой хостинг: пошаговая инструкция
Перенос сайта Битрикс на другой хостинг
Разработка
Как добавить пиксель на сайт своими руками в 2022 году?
Как добавить пиксель на сайт
Разработка
Кэширование данных в Bitrix: настройка, как это работает, что это такое
Кэширование данных в Bitrix
Разработка
Cron в Битриксе - функционал Агентов для регулярных задач
Cron в Битриксе