Skip to main content

Как установить агенты на крон

Настройка агентов на крон в 1С-Битрикс

Эта инструкция поможет вам настроить выполнение агентов через cron для улучшения производительности сайта.


Шаг 1: Отключение выполнения агентов при посещении страниц

  1. Перейдите в административную панель сайта.
  2. Откройте раздел НастройкиИнструментыКомандная PHP-строка.
  3. Вставьте и выполните следующий код:

Если прочие команды есть, то их надо стереть

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, что подтверждает корректное выполнение.


Шаг 2: Настройка файла конфигурации

Правки желательно вносить не через админку сайта, а через ftp/ssh или через файловый менеджер хостинг

  1. Откройте файл /bitrix/php_interface/dbconn.php.

  2. Удалите следующие строки, если они присутствуют:

    define("BX_CRONTAB_SUPPORT", true);
    define("BX_CRONTAB", true);
    
  3. Добавьте следующую строку:

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

Шаг 3: Создание скрипта для выполнения агентов

Правки желательно вносить не через админку сайта, а через ftp/ssh или через файловый менеджер хостинг

  1. Создайте файл /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);
    
    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();
    ?>
    

Шаг 4: Настройка задания в cron

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

Важно. Нужно, чтобы версия PHP была такая же как и на сайте

  1. Откройте терминал на вашем сервере.

  2. Введите команду для редактирования crontab:

    crontab -e
    
  3. Добавьте следующую строку для выполнения скрипта каждую минуту:

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

    Замените /usr/bin/php на путь к вашему PHP-интерпретатору, если он отличается, и /home/bitrix/www/ на путь к корневой директории вашего сайта.

  4. Сохраните и закройте редактор.


Шаг 5: Оптимизация отправки почтовых сообщений

Чтобы уменьшить очередь отправки почтовых сообщений, выполните в командной PHP-строке административной панели следующий код:

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

После выполнения вы должны увидеть вывод: 20.


Примечания

  • Права доступа: Убедитесь, что пользователь, от имени которого выполняется cron-задание, имеет необходимые права доступа к файлам и директориям сайта.
  • Проверка работы: После настройки рекомендуется проверить корректность выполнения агентов и отправки почтовых сообщений.
  • Логи: В случае возникновения ошибок проверьте логи сервера и PHP для диагностики проблем.

Следуя этой инструкции, вы настроите выполнение агентов через cron, что позволит разгрузить сервер и обеспечить более стабильную работу сайта.