Настройка почтовых событий на Cron в 1С-Битрикс

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

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

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

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

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

Добавить задание в CRON:

*/1 * * * * php -f /var/www/bitrix/modules/main/tools/cron_events.php

Общее решение для запуска всех агентов из-под 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();
}

добавить задание в CRON:

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

Увеличение количества обрабатываемых за раз событий

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

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

Источник: https://www.acrit-studio.ru/pantry-programmer/useful-tips-for-configuring-1c_bitrix/configuring-email-events-on-cron-in-_1c_bitrix_-/