Как установить агенты на крон
Настройка агентов на крон в 1С-Битрикс
Эта инструкция поможет вам настроить выполнение агентов через cron для улучшения производительности сайта.
Шаг 1: Отключение выполнения агентов при посещении страниц
- Перейдите в административную панель сайта.
- Откройте раздел Настройки → Инструменты → Командная 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, что подтверждает корректное выполнение.
Шаг 2: Настройка файла конфигурации
Правки желательно вносить не через админку сайта, а через ftp/ssh или через файловый менеджер хостинг
-
Откройте файл
/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);
Шаг 3: Создание скрипта для выполнения агентов
Правки желательно вносить не через админку сайта, а через ftp/ssh или через файловый менеджер хостинг
-
Создайте файл
/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); 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(); ?>
Шаг 4: Настройка задания в cron
Рекомендуем обратиться в службу технической поддержки для выполнения этого действия, поскольку на виртуальных хостингах обычно предусмотрен специальный интерфейс для таких задач.
Важно. Нужно, чтобы версия PHP была такая же как и на сайте
-
Откройте терминал на вашем сервере.
-
Введите команду для редактирования crontab:
crontab -e -
Добавьте следующую строку для выполнения скрипта каждую минуту:
*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.phpЗамените
/usr/bin/phpна путь к вашему PHP-интерпретатору, если он отличается, и/home/bitrix/www/на путь к корневой директории вашего сайта. -
Сохраните и закройте редактор.
Шаг 5: Оптимизация отправки почтовых сообщений
Чтобы уменьшить очередь отправки почтовых сообщений, выполните в командной PHP-строке административной панели следующий код:
COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");
После выполнения вы должны увидеть вывод: 20.
Примечания
- Права доступа: Убедитесь, что пользователь, от имени которого выполняется cron-задание, имеет необходимые права доступа к файлам и директориям сайта.
- Проверка работы: После настройки рекомендуется проверить корректность выполнения агентов и отправки почтовых сообщений.
- Логи: В случае возникновения ошибок проверьте логи сервера и PHP для диагностики проблем.
Следуя этой инструкции, вы настроите выполнение агентов через cron, что позволит разгрузить сервер и обеспечить более стабильную работу сайта.