Cron в битрикс где находится
Перейти к содержимому

Cron в битрикс где находится

  • автор:

Настройка агентов на крон

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

Настройки > Инструменты > Командная PHP-строка и вставьте следующий код в php консоль и нажмите кнопку «Выполнить»:

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

После этого в панели ISPmanager пройдите в Менеджер файлов:

Перейдите по пути: /www/ваш.домен /bitrix/php_interface/dbconn.php и отредактируйте файл «dbconn.php»

В данном примере используется путь: /www/example.cloudplace.ru/bitrix/php_interface/dbconn.php

Удаляем в файле dbconn.php следующие строки кода:

Добавляем в файл dbconn.php следующий код:

Далее создадим новый файл в Менеджере файлов /www/ваш.домен/bitrix/php_interface/cron_events.php
В данном примере используется путь /www/example.cloudplace.ru/bitrix/php_interface/cron_events.php


Переводим агенты на Cron

В Битриксе агенты могут работать на хитах при загрузке страницы сайта или на cron программа-демон на сервере.

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

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

Для перевода агентов на cron понадобиться сервер с установленным cron .

Скрипты, которые должны запускаться на cron :

  1. /bitrix/modules/main/tools/cron_events.php
  2. /bitrix/php_interface/cron_events.php

Для дальнейшей работы нужно получить путь до файловой системы сайта, чтобы построить корректный путь до скриптов, которые будут запускаться на cron . Для этого создаем тестовый файл с PHP кодом в корне сайта и запускаем его:

Мы получили путь до файловой системы сайта, в моем случае это:

Подключаемся к серверу через SSH используя SSH клиент.

Для начала следует проверить, не прописаны ли в cron выше упомянутые файлы, прописываем команду и смотрим список текущих скриптов, запускаемых cron :

Для добавления новых скриптов в список запуска cron используем команду:

Добавляем с помощью редактора следующие строки:

После проделанной работы, добавляем в файл /bitrix/php_interface/dbconn.php код:

Теперь агенты выполняются на cron :

Выполнение агентов на Cron

Если после описанных выше действий, агенты не начали работать на cron, то переходим в Настройки -> Инструменты -> -> Командная PHP-строка и исполняем следующий код:

Настройка выполнения агентов Битрикс на Cron — решение проблемы неработающих агентов

Агенты Битрикса – всевозможные фоновые задачи, необходимые для функционирования системы. Согласно официальной терминологии, агенты — технология, позволяющая запускать произвольные PHP функции (агенты) с заданной периодичностью. Технически агент — это запись в специальной таблице:

  • какой код надо выполнить,
  • когда выполнить,
  • с каким периодом выполнять,
  • каким способом назначать время следующего запуска агента (строго периодический или нестрого периодический агент).

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

Хочу отдельно отметить слова «в конце загрузки страницы». Запомним их.

Что делают Агенты Битрикса и как работают

Агенты осуществляют отправку почты, сбор мусора, обновление системной информации, контролируют состояние сайта, обновляют метрики, проверяют наличие обновлений и т.д. Имеется возможность писать и собственные функции-агенты.

Агенты могут выполняться с разной периодичностью. Раз в несколько минут, раз в час, раз в день или больше.

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

Однако, если посещаемость сайта не слишком высока (будем реалистами, 10000 хитов в день есть далеко не у всех) – очередь агентов будет расти. И может вызвать проблемы с производительностью у первого посетителя, который попадет на такой сайт. Да, агенты быстро завершат свою работу и сайт начнет работать с достаточной отзывчивостью. Но в самом начале, в первые несколько кликов – сайт может ощутимо тормозить.

Согласно статистики, каждые 100 миллисекунд ожидания снижают конверсию на 7%. Каждые 2 секунды ожидания увеличивают вероятность того, что пользователь покинет сайт на 103%. Хотите ли вы терять потенциального клиента, который ушел из-за таких вот, чисто технических моментов? Конечно, Вы не хотите.

Как правильно настроить Агенты Битрикс

Для этого существует механизм перевода агентов на встроенный в ОС Linux планировщик – cron.

Он заставляет агенты выполняться по расписанию вне зависимости от посещаемости сайта, так как механизм запуска более не привязывается к загрузке страниц. Вместо этого он привязывается к часам на сервере и за своевременный запуск агентов отвечает операционная система.

Вместе с тем, в течение последних лет наблюдается тенденция к замещению функционала планировщика cron другим механизмом – systemd. Подсистема инициализации и управления службами, которая в 2010-2011 годах фактически вытеснила традиционную init, значительно усовершенствовав ее возможности. Новые функции systemd заменили и планировщик cron. Сейчас он есть в большинстве операционных систем семейства Linux, однако оставлен там скорее для обеспечения совместимости, чем для решения реальных задач.

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

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

Настройка Агентов на cron systemd

Шаг 1. Отключим исполнение агентов по хитам

Для этого перейдем в административную часть сайта, расположенную по адресу example.ru/bitrix/admin.

Далее Настройки – Инструменты – Командная PHP строка.

Для начала отключим исполнение агентов по хитам

Впишем туда код:

Результат выполнения команды должен отобразить надпись NN

Шаг 2. Внесем изменения в настройки ядра Битрикс

Для этого отредактируем файл /home/bitrix/ext_www/example.com/bitrix/php_interface/dbconn.php

Внимание! Если у вас не подключен мультисайт, то вероятнее всего этот файл находится в каталоге /home/bitrix/www/bitrix/php_interface/dbconn.php

Удалим или закомментируем строки с текстом (если они там есть):

Также в конце файла добавим

В этой же папке создаем (если нет) файл cron_events.php следующего содержания:

Шаг 3. Создадим службу и таймер для ее запуска в systemd

Переместимся в папку /etc/systemd/system и создадим в ней файл bitrix-agents.service

Обратите внимание на путь в строке ExecStart. Он должен соответствовать местоположению ранее созданного нами файла cron_events.php.

Создадим второй файл таймера для службы: bitrix-agents.timer. Названия файлов должны совпадать в левой их части, разница только в окончаниях (.service и .timer).

Как мы знаем из шпаргалки, значение OnCalendar=*:0/1 означает выполнение один раз в минуту. Этого более чем достаточно для наших целей.

Шаг 4. Проверим правильность созданной конфигурации

Выполним команды в консоли сервера:

Никаких ошибок быть не должно. После этого запустим таймер (и только его!).

В результате раз в минуту будет срабатывать созданный нами таймер и связанная с ним служба, которая будет запускать интерпретатор php от имени пользователя bitrix и выполнять в нем файл cron_events.php, который, в свою очередь, запустит выполнение всех нужных агентов.

Убедиться, что все работает можно при помощи команды

Если зайти в административную панель Битрикс и перейти в Настройки – Настройки продукта – Агенты Вы также увидите, что все агенты своевременно выполняются.

Выполнение всех агентов 1С-Битрикс на cron

Выполнение всех агентов 1С-Битрикс на cron

Отключите выполнение агентов на хитах. Для этого php консоли выполните:

Результатом выполнения должно быть «NN».

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

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

И добавьте созданный скрипт в cron:

Чтобы увидеть список активных заданий наберите:

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

Оригинал инструкции на dev.1c-bitrix.ru

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *