Анкета для регистрации интернет-ресурса
В соответствии с Указом Президента Республики Беларусь № 60 от 01.02.2010г.
Техподдержка
Приложение support.by

E-mail: ticket@support.by

 

Портал > База знаний > Bitrix > Выполнение всех агентов на cron


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




Если агенты занимают несколько десятых долей секунды, то уже стоит задуматься о переносе агентов на cron. "Тяжелым" считается агент, который выполняется более 10 секунд.

Не стоит забывать и про накопительный эффект агентов. Если агенты запускаются на хитах, то при маленькой посещаемости и при длительном окне без посетителей может скопиться достаточное количество агентов, ожидающих запуска. Тогда следующего посетителя встретят не самые быстрые секунды на вашем сайте.

Чтобы полностью отключить выполнение агентов на хите перейдем на страницу Настройки > Инструменты > Командная 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 определение следующих констант:

#nano /home/bitrix/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);
 

Создадим файл проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php со следующим содержимым:


#nano /home/bitrix/www/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:

#crontab -e -u bitrix

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

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


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





Помог ли вам данный ответ?

Добавить в избранное Добавить в избранное    Распечатать статью Распечатать статью

Также читают
Оптимизация работы MySQL (просмотров: 2713)

Powered by WHMCompleteSolution