Выполнение всех агентов 1С-Битрикс на cron

Отключите выполнение агентов на хитах. Для этого 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

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

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('BX_NO_ACCELERATOR_RESET', true);
define('CHK_EVENT', true);
define('BX_WITH_ON_AFTER_EPILOG', 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('sender'))
{
\Bitrix\Sender\MailingManager::checkPeriod(false);
\Bitrix\Sender\MailingManager::checkSend();
}

require($_SERVER['DOCUMENT_ROOT']."/bitrix/modules/main/tools/backup.php");
CMain::FinalActions();
?>

И добавьте созданный скрипт в cron:

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

Чтобы увидеть список активных заданий наберите:

# crontab -l

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

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

Оригинал инструкции на dev.1c-bitrix.ru

На этом всё. Но вы можете помочь проекту. Даже небольшая сумма поможет нам писать больше полезных статей.

А если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.