В прошлый раз мы дали инструкцию по настройке почты на виртуальной машине «Битрикс» и остановились на том, что почтовые события необходимо настроить как агенты 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"); ------------------------------- Спасибо за внимание! Читайте свежий выпуск «Кладовки программиста» http://www.acrit-studio.ru/pantry-programmer/solutions-to-bugs-and-errors-1c_bitrix/the-experience-of-developing-a-_trade-management_-in-_bitrix/ каждый день!
Компания АКРИТ
Настройка почтовых событий на Cron в «1С-Битрикс»
В прошлый раз мы дали инструкцию по настройке почты на виртуальной машине «Битрикс» и остановились на том, что почтовые события необходимо настроить как агенты 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");
-------------------------------
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» http://www.acrit-studio.ru/pantry-programmer/solutions-to-bugs-and-errors-1c_bitrix/the-experience-of-developing-a-_trade-management_-in-_bitrix/ каждый день!