Настройка на тарифах виртуального хостинга


Настройка осуществляется в несколько этапов:

  1. Отключение агентов на хите в командной php-строке 1С-Битрикс
  2. Настройка агентов cron на стороне RedDock
  3. Создание и настройка файла для обработки агентов

Шаг №1. Отключение агентов на хите на стороне 1С-Битрикс

В административной части сайта перейдите в Настройки (1) → Инструменты (2) → Командная PHP-строка (3). Добавьте следующие строки (4):

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");

Нажмите кнопку «Выполнить» (5). В результате выполнения снизу должно появиться «NN».

Шаг №2. Настройка агентов cron на стороне RedDock

Перейдите в панель управления виртуальным хостингом (инструкция). На панели меню слева перейдите в Главное (1) → Менеджер файлов (2). Найдите файл «dbconn.php». По умолчанию он расположен по следующему пути: /www/ваш_домен/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);

Должно получиться вот так:

Нажмите кнопку «Ок». 

Шаг №3. Создание и настройка файла для обработки агентов

В менеджере файлов (/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("BX_CRONTAB", true);
define('BX_NO_ACCELERATOR_RESET', 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");
    ?>

Сохраните изменения. Теперь нужно настроить выполнение этого файла. Для этого на панели меню слева перейдите в Главное (1) → Планировщик (2) и нажимаем кнопку «Создать».

Откроется новая вкладка такого вида:

В строке «Команда» (1) укажите следующее значение:

  • для PHP версии 5.6
/bin/sh -c 'cd /var/www/bxXXXX/data/www/mydomain.ru && /opt/php56/bin/php -f bitrix/php_interface/cron_events.php'

Где mydomain.ru — домен вашего сайта, bxXXXX — ваш логин (отображается в правом верхнем углу). Замените эти значения на ваши.

  • для PHP версии 7.0
/bin/sh -c 'cd /var/www/bxXXXX/data/www/mydomain.ru && /opt/php70/bin/php -f bitrix/php_interface/cron_events.php'

Где mydomain.ru — домен вашего сайта, bxXXXX — ваш логин (отображается в правом верхнем углу). Замените эти значения на ваши.

В строке «Описание» (2) можно указать «Cron». В расписании выберите «Экспертный режим» (3) и установите в появившихся полях символ звездочки * (4). Если вы не хотите получать отчет о выполнении по email, установите галочку в соответствующей строке (5). Для завершения нажмите «Ok» (6).

Чтобы проверить выполнение настройки, в административной части сайта (1С-Битрикс) перейдите в Настройки → Инструменты → Проверка системы. Запустите тестирование и убедитесь, что выполнение агентов на cron выполнено успешно.