В Битриксе есть такое понятие как агенты, фактически это функции, которые должны сработать в определенное время, или с определённой периодичностью.

В Битриксе агенты могут работать на хитах (то есть при загрузке страницы сайта) или на cron (программа-демон на сервере).

По-умолчанию, после установки Битрикса, агенты работают на хитах, но лучше переводить их на cron, особенно при малой посещаемости сайта (время запуска агента на хите может сильно отличиться от заданного).

Для перевода агентов на cron Вам понадобиться сервер, с установленным cron, ssh доступ к серверу и ~20 минут реального времени.

Первое, что нам необходимо сделать — это получить путь до файловой системы сайта, чтобы построить корректный путь до скриптов, которые будут запускаться на cron.

Скрипты, которые должны запускаться на cron:

  • /bitrix/modules/main/tools/cron_events.php
  • /bitrix/php_interface/cron_events.php

Для этого в админ панели заходим в «Настройки» -> «Инструменты» -> «Командная PHP-строка» и выполняем следующий код:

print_r($_SERVER['DOCUMENT_ROOT']);

Мы получили путь до файловой системы сайта, мы будем использовать его позже.
В моём случае это /home/bitrix/ext_www/bitrix.test

Подключаемся к серверу через SSH используя SSH клиент (например PuTTY).

Для начала следует проверить, не прописаны ли в cron выше упомянутые файлы, прописываем команду:

crontab -l

Смотрим список текущих скриптов, запускаемых cron.

Для добавления новых скриптов в список запуска cron используем команду:

crontab -e

Запустится редактор vi. Команды редактора vi:

i — для вставки текста
x — удаление символа
:q! — выход без сохранения
:wq — выход с сохранением

Добавляем с помощью редактора следующие строки:

* * * * * /usr/bin/php -f ваш_путь_до_сайта/bitrix/modules/main/tools/cron_events.php
*/5 * * * * /usr/bin/php -f ваш_путь_до_сайта/bitrix/php_interface/cron_events.php

В моем случае:

* * * * * /usr/bin/php -f   /home/bitrix/ext_www/bitrix.test/bitrix/modules/main/tools/cron_events.php
*/5 * * * * /usr/bin/php -f   /home/bitrix/ext_www/bitrix.test/bitrix/php_interface/cron_events.php

Не забываем сохранить изменения в редакторе. Проверить, что вы всё сохранили можно с помощью уже известной Вам команды crontab -l

Открываем файловую систему сайта.
Добавляем в файл /bitrix/php_interface/dbconn.php код:

define('BX_CRONTAB_SUPPORT', true);

Всё агенты выполняются на cron.

Если после описанных выше действий, агенты не начали работать на 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");