Настройка агентов на cron

Перед тестированием модулей необходимо настроить агенты на крон.

Информация для модуля обмена товарами:

Начиная с версии 1.9.2 вы можете настроить вызов агентов модуля с помощью вызова отдельного скрипта, который лежит в папке модуля. Это не отменяет того, что необходимо настроить агенты 1С-Битрикс на cron по этой инструкции, но может снизить нагрузку на эти агенты.

Подробнее: https://docs.despi.ru/ms-modules/rbs-moyskladstocks/devs/module-agent

Проверка текущего режима выполнения агентов

Для начала необходимо проверить текущий режим выполнения агентов. Для этого зайдите в проверку систему сайта и нажмите "начать проверку"

Если агенты работают на cron, то будет выведена соответствующая надпись:

Если же агенты выполняются на хитах, то их необходимо перевести на крон.

Перевод агентов на cron

Полная инструкция по агентам доступна в документации Битрикс:

Из этой инструкции нам понадобится пункт Обобщённое решение

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

Обобщенное решение для выполнения всех агентов из-под 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:

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

Убедитесь, что пользователь, от имени которого выполняется cron, имеет необходимые права доступа для запуска PHP и чтения скриптов 1С-Битрикс.

Не используйте пользователя root для запуска скрипта.

Внимание! Путь до PHP у каждого хостинга разный, поэтому уточните сначала путь до PHP в поддержке хостинга. В примере выше используется стандартный путь до PHP: /usr/bin/php

Также не забывайте, что версия PHP для выполнения агентов должна соответствовать версии PHP для сайта.

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

Last updated