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

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

По умолчанию все агенты в Битриксе выполняются на хитах. Для ускорения работы сайта в целом необходимо выполнение агентов переложить на cron.
И так к делу, заходим в командную PHP-строку в административной части сайта:

Настройки / Инструменты / Командная 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);

Создаем файл с именем “cron_events.php” для проверки агентов и рассылки системных сообщений в папке:

bitrix/php_interface/

Со следующим кодом:

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

Вот далее самое сложное. Необходимо добавить скрипт для запуска cron на Вашем сервере. Если для управления сервера Вы пользуетесь панелью ISPmanager, то заходим в:

В строке “Команда” вставляем путь к файлу “cron_events.php”:

/usr/bin/php /var/www/ВАШ САЙТ/data/www/ВАШ САЙТ/bitrix/php_interface/cron_events.php

Соответственно вместо “ВАШ САЙТ” вставьте папку где хранится Ваш сайт. Правильный путь можно посмотреть в “Менеджере файлов” панели управления ISPmanager.

/usr/bin/php – этот путь зависит от версии, которая используется в работе сайта, посмотреть можно в настройках сайта.

В строке “Описание” подробно напишите за что отвечает данный cron.
В строке “Расписание” поставьте “экспертный режим”.
Далее в строках “Минуты”, “Часы”, и т. д. везде ставим “*”, чтобы задание выполнялось каждую минуту.
В строке “Не отправлять отчет по e-mail” ставим галочку, а то каждую минуту будет приходить письмо об успешном выполнении.

Вот и всё.

Проверить выполняются ли агенты каждую минуту можно в административной части Вашего сайта. Заходим:

Настройки / Настройки продукта / Агенты

Находим агента с интервалом выполнения в 60 секунд, смотрим на время последнего запуска. Ждём минуту, или более, обновляем страницу. Время последнего запуска должно изменится на минуту вперёд или более, зависит от того, сколько времени Вы не обновляли страницу.

Просмотров: 20 просмотров

Вам также может понравиться

Автор: Джон Смитов

Coach of the pohuizm. Trasher in the web development.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.