Подробное описание функций агента

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

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

  • Товаров в МС = 5 250

  • Разделов в МС = 300

  • Обмениваем цены, остатки, товары, разделы

Шаг выборки элементов

Этого параметра нет только в "Быстрые остатки" и "Группы". В остальных вкладках это стандартный параметр, который отвечает за то, сколько элементов будет считано из МС за один шаг. В нашем примере если мы запускаем агент импорта цен раз в 60 секунд с шагом 300, то модуль сделает

5250 / 300 = 17.5 поскольку шаги бывают только целыми, поэтому 18 шагов для обмена всего каталога. Интервал шага будет 60 секунд (примерно). Итого за 18 - 20 минут обменяется весь каталог цен.

Соответственно, если увеличим шаг, то скорость будет быстрее, но и нагрузка на БД сайта также увеличиться.

Обменивать только измененные элементы

Это важная функция агентов модуля, которая снижает нагрузку на ваш сайт до минимума. Этой функции нет только в обмене "Остатки", "Скидки", "Группы".

Если вы поставите эту галочку, то модуль начнет обменивать только те элементы, которые были изменены.

Приведем опять же наш пример: мы обменяли все цены на сайт и включили эту галочку, что будет делать модуль:

  • Первый запуск агента после проставления этой галочки модуль спросит у МС какие товары поменяли цены за последние 5 минут

  • МС ему ответит, что никакие, тогда модуль запомнит это время, пусть будет 13:45

  • И далее последующие шаги модуль будет спрашивать МС: какие товары поменяли цены начиная с 13:45?

  • Если МС ответит модулю, что поменялись товары, то модуль обновит им цены и также запомнит время последнего изменения и начнет со 2 шага.

Таким образом большая часть нагрузки и большая часть запросов в МС будет с минимальными издержками. Это касается обмена ценами, товарами, модификациями, комплектами, услугами и быстрыми остатками.

Провести разовый полный обмен

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

Интервал, когда проводим полный обмен

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

Запускать агенты с помощью модуля

Здесь стоит описать схемы запуска агентов для объяснения сути работы агентов через модуль.

Схемы запуска агентов

На схему запуска агента влияет галочка в блоке агента "Запускать агенты с помощью модуля"

Галочка по умолчанию заблокирована и разблокировать ее можно настроив скрипт модуля на cron.

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

Запуск агентов через 1С-Битрикс

Итак, на необходимо запустить 4 агента с интервалом раз в минуту. Предположим что делаем только полный импорт (в простых остатках по другому никак). Итого мы получаем:

  • Запустился агент цен и выполнился за 30 секунд

  • Запустился агент остатков и выполнился за 25 секунд

  • Запустился агент импорта товаров и выполнился за 40 секунд

  • Запустился агент импорта разделов и выполнился за 5 секунд

Итого на все агенты ушло 1 минута и 40 секунд, что уже не вмещается в наш интервал запуска 60 секунд, это мы еще не считаем запуск остальных агентов битрикса, которые также могут занимать немало времени. В среднем мы получим запуск агентов раз в 2 минуты при таких вводных. Поэтому смело можно менять частоту запуска на 120 секунд в настройках агента.

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

Запуск агентов через модуль

Здесь мы уже не можем указать частоту выполнения агентов, мы просто поставили наш скрипт на запуск через cron каждую минуту, тогда из нашего примера поменяется следующее:

  • cron запустит скрипт, который выполняется 1 минуту 40 секунд

  • спустя минуту cron снова запустит этот скрипт, но поскольку агенты еще не успели выполнится, то этот запуск будет пропущен

  • спустя еще минуту (уже прошло 2 минуты) cron снова запустит скрипт и поскольку агенты уже будут выполнены он запустит их снова

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

Last updated