Define bx crontab support true

Что такое кеш?

Для запуска функций в заданное время, в битриксе существует технология Агентов.

По умолчанию, агенты выполняются на хитах, то есть при каждом посещении сайта пользователем, битрикс проверяет, какие агенты пора запускать и выполняет их. У этого способа есть два недостатка — во первых, при нерегулярном посещении агенты могут запускаться позже чем нужно. Во вторых — тяжёлые агенты могут затормозить работу сайта. От обоих недостатков можно избавиться, если запускать агенты с помощью cron.
Чтобы выполнять агенты через крон нужно открыть консоль PHP , находящуюся в Настройки>Инструменты>Командная строка PHP и выполнить команду

В результате выполнения должно быть написано "NN".

После этого убираем из файла bitrix/php_interface/dbconn.php определение следующих констант:

define("BX_CRONTAB_SUPPORT", true);define("BX_CRONTAB", true);

И заменяем их на:

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

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

*/5 * * * * /usr/bin/php -f путь_к_bitrix/bitrix/php_interface/cron_events.php

Работать будет только одна копия агента, то есть — если какой-то агент не успевает завершится к моменту нового запуска, то запущен он не будет. Следует помнить, что отправка писем так-же осуществляется с помощью агентов. Чтобы не увеличивалась очередь сообщений ожидающих отправки, рекомендуется изменить параметр отвечающий за количество почтовых событий обрабатываемых за раз. Для этого выполняем в php консоли следующую команду:

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

На этом настройка крона в Bitrix закончена.

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

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

Читайте также:  Pokemon nintendo ds на русском

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 минуту в формате

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

и добавляем условие

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

И добавляем этот скрипт в 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");

Руководство по настройке агентов Bitrix

Агенты — это функционал 1С-Битрикс, который позволяет автоматизировать регулярно выполняемые процессы.
Агент представляет собой запись в базе данных сайта, содержащую информацию о запускаемом в определенный момент времени.

Агенты по умолчанию настроены запускаться по Событиям, то есть при любой пользовательской активности 1С-Битрикс анализирует список агентов и запускает те из них, время запуска которых наступило.

Читайте также:  Значки для статуса в контакте

Для того, чтобы скрипты начали работать по расписанию, агенты необходимо перевести на Cron.

Для начала полностью отключим выполнение агентов на хите. Для этого выполним следующую команду в php консоли:

В результате выполнения должно быть "NN".

После этого убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:

И добавляем в этот файл:

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

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

После этого все агенты и отправка системных событий будут обрабатывается из под cron, раз в 5 минут.

  • Примечание: Время выполнения можно скорректировать в соответствие с проектом. Кроме того, есть возможность через установку большого значения mail_event_bulk сделать более "быстрой" доставку почтовых уведомлений. Установка проверки раз в минуту вместе с отправкой за раз 100 сообщений, сделает для пользователей незаметным данную задержку.

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