+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


В прошлый раз мы дали инструкцию по настройке почты на виртуальной машине «Битрикс» и остановились на том, что почтовые события необходимо настроить как агенты Cron. Расскажем, как именно:

 
1. Запустите выполнение периодических агентов

Перейдя по адресу Настройки > Инструменты > Командная PHP-строка, выполните команду:

COption::SetOptionString("main", "agents_use_crontab", "Y");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

Подтверждение «Y» означает, что выполняются только периодические хиты

Теперь на странице Настройки > Настройки продукта > Агенты настройте показ колонки Периодический. Выберите в ней почтовые агенты и проверьте, выставлены ли флаги «периодический». Если нет, поставьте флаги.

Добавьте в cron команду

/usr/bin/php -f /var/www/bitrix/modules/main/tools/cron_events.php

и установите почтовым агентам периодичность в 1 минуту в формате

*/1 * * * *

2. Общее решение для запуска всех агентов из-под 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);

Наконец, создадим файл проверки проверки агентов и рассылки системных сообщений /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('CHK_EVENT', 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("subscribe"))
{
$cPosting = new CPosting;
$cPosting->AutoSend();
}
?>

И добавляем этот скрипт в cron:

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

3. Не забудьте увеличить количество обрабатываемых за раз событий

Если этого не сделать, то будет образовываться очередь из неотправленных сообщений

Открываем PHP-консоль Настройки > Инструменты > Командная PHP-строка и выполним команду

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

 
---------------------------------------
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день

Назад в раздел

Подписаться на новые материалы раздела:














CAPTCHA