Обеспечивает интеграцию Битрикс с брокером сообщений RabbitMQ (AMQP) либо, при его отсутствии, реализует менеджер на базе используемой продуктом СуБД.
Разработан на основе пакета yii3 queue
Модуль предназначен для разработчиков, никаких компонентов/шаблонов для публичной части не предполагается.
Детали использования см. на вкладке "Установка"
Приобретенные программные продукты поставляются в виде цифро-буквенного кода. Используя код, вы сможете установить продукт на хостинг. Код приходит на указанный в заказе адрес электронной почты.
Время от момента получения оплаты до момента отправки кода составляет несколько часов. В течение этого периода выполняет оформление приобретенной продукции.
Обращаем ваше внимание, что дополнительная задержка может быть вызвана некорректно указанным адресом почты. Просим вас внимательно проверять ваши персональные данные при оформлении заказа. Мы гарантируем, что конфиденциальность ваших данных будет соблюдена.
Что требуется для установки:
- CSM «1С-Битрикс».
- Домен.
- Хостинг.
Мы предлагаем приобрести все необходимое в готовом наборе на нашем сайте. Это позволит ускорить дальнейшую установку.
Бонус: бесплатная базовая установка!
Чтобы получить подробную информацию о сервисе, вы можете ознакомиться с официальными реестрами Visa International и MasterCard Worldwide. Заполнив и подтвердив заказ, вы будете переадресованы на сайт сервиса Яндекс.Деньги. Там вы сможете оплатить заказ, воспользовавшись картой Visa, Mastercard или Maestro или кошельком Яндекс.Деньги.
Подробнее
Решение устанавливается на любые редакции БУС:
- Установите модуль штатным образом. Запись сообщений
- По умолчанию очередь обслуживается используемой продуктом СуБД (в процессе установки модуль создает таблицу в базе данных, в которую пишутся сообщения и обрабатываются в дальнейшем)
Для использования на базе брокера сообщений RabbitMQ необходимо внести изменение в конфигурацию приложения (файл .settings.php), добавив новое соединение в секцию `connections`.'rabbitmq' => [ 'className' => '\\InterMotion\\Queue\\Expansion\\Bitrix\\Main\\Data\\RabbitMQConnection', 'host' => "{rabbitmq_host}", 'port' => {rabbitmq_port}, 'username' => "{rabbitmq_username}", 'password' => "{rabbitmq_password}", ], - Обработка сообщений
Предпочтительным является обработка сообщений, используя процесс-менеджер `supervisor`, альтернативным вариантом является использование менеджера фоновых задач - `crontab`.
$ sudo apt update && sudo apt install supervisor -y $ sudo systemctl enable --now supervisor $ sudo nano /etc/supervisor/conf.d/bitrix-worker.conf |
[program:bitrix-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/site.tld/bitrix/modules/intermotion.queue/tools/console.php queue:listen autostart=true autorestart=true stopasgroup=true killasgroup=true numprocs=5 redirect_stderr=true stdout_logfile=/var/log/bitrix-worker.log |
Параметр `numproc` отвечает за количество активных единомоментно процессов (воркеров) параллельно обрабатывающих очередь.
применяем конфигурацию:$ sudo supervisorctl reread $ sudo supervisorctl update # запускаем воркер $ sudo supervisorctl start bitrix-worker |
$ sudo supervisorctl status |
* * * * * /usr/bin/flock -w 1 php /var/www/site.tld/bitrix/modules/intermotion.queue/tools/console.php queue:run |
Использование штатных событий
Модуль реализует отложенное выполнения ряда штатных событий для элементов, разделов инфоблоков, товаров, их остатков и цен.
use Bitrix\Main;
// элементы инфоблоков
iblock:OnAfterIBlockElement<Add,Update,Delete>(array $fields)
-> intermotion.queue:onAfterIblockElement<Add,Update,Delete>(new Main\Event $e {
parameters: [elementId: {id}, iblockId: {iblockId}]
})
-> intermotion.queue:onAfterIblockElementAction(Main\Event $e {
parameters: [elementId: {id}, iblockId: {iblockId}, action: {add,update,delete}]
})
// разделы инфоблоков
iblock:OnAfterIBlockSection<Add,Update,Delete>(array $fields)
-> intermotion.queue:onAfterIblockSection<Add,Update,Delete>(Main\Event $e {
parameters: [elementId: {id}, iblockId: {iblockId}]
})
-> intermotion.queue:onAfterIblockSectionAction(new Main\Event $e {
parameters: [elementId: {id}, iblockId: {iblockId}, action: {add,update,delete}]
})
// товары
catalog:Bitrix\Catalog\Model\Product::OnAfter<Add,Update,Delete>(Main\Event $e)
-> intermotion.queue:onAfterCatalogProduct<Add,Update,Delete>(Main\Event $e {
parameters: [productId: {id}]
})
-> intermotion.queue:onAfterCatalogProductAction(new Main\Event $e {
parameters: [productId: {id}, action: {add,update,delete}]
})
// цены
catalog:Bitrix\Catalog\Model\Price::OnAfter<Add,Update,Delete>(Main\Event $e)
-> intermotion.queue:onAfterCatalogProductPrice<Add,Update,Delete>(Main\Event $e {
parameters: [productPriceId: {id}]
})
-> intermotion.queue:onAfterCatalogProductPriceAction(new Main\Event $e {
parameters: [productPriceId: {id}, action: {add,update,delete}]
})
// остатки
catalog:OnStoreProduct<Add,Update,Delete>(int $id)
-> intermotion.queue:onAfterCatalogStorePrice<Add,Update,Delete>(Main\Event $e {
parameters: [productStoreId: {id}]
})
-> intermotion.queue:onAfterCatalogProductStoreAction(new Main\Event $e {
parameters: [productStoreId: {id}, action: {add,update,delete}]
}) |
Например, при создании элемента инфоблока необходимо выполнить сложные, ресурсозатратные операции. Если подписываться на стандартные события модуля "информационные блоки", то время, которое необходимо на просчет этих операций, будет "затормаживать" систему администрирования и прочие api-вызовы, подразумевающие сохранение элементов.
Это идеальный случай для использования "отложенных" выполнений событий.
use Bitrix\Main;
use Bitrix\Iblock;
use InterMotion\Queue;
// вместо
Main\EventManager::getInstance()->addEventHandler(
'iblock',
'OnAfterIBlockElementAdd',
function(array $fields): void
{
try
{
if (!isset($fields['RESULT']) || !$fields['RESULT'])
{
throw new Main\NotSupportedException('Element not really saved');
}
$elementId = (int) $fields['ID'];
$iblockId = (int) $fields['IBLOCK_ID'];
// сложные вычисления.
}
catch (\Throwable $exception)
{
}
}
);
// используем
Main\EventManager::getInstance()->addEventHandler(
Queue\Config::getModuleName(),
'OnAfterIBlockElementAdd',
function(Main\Event $event): Main\EventResult
{
try
{
// обязательно необходимо проверить что элемент, соответсвующий идентификатору существует
$elementId = $event->getParameter('elementId');
$iblockId = $event->getParameter('iblockId');
// сложные вычисления.
}
catch (\Throwable $exception)
{
}
return (new Main\EventResult(Main\EventResult::SUCCESS);
}
); |
ВАЖНО: все обработчики событий имеют равный приоритет выполнения и попадают в один общий канал (`channel`). Поэтому, следует не допускать перекоса по времени выполнения обработчиков. Например, есть 10 типов обработчиков, 9 из которых выполняются по 5-10 секунд, а 10-ый требует для выполнения одну минуту. Таким образом, в перспективе, 9 обработчиков будут ждать когда выполнится 10-ый. При условии, что событий очень много, может возникнуть ситуация, когда все время выполняются только 10-ые обработчики, а до первых 9 очередь просто не дойдет.
Решить данную проблему можно либо,
- увеличением количества процессов (см `supervisor`, параметр `numprocs`;
- созданием своих собственных событий, которые будут отправлять сообщения в отдельный канал и в последующем выделять отдельные воркеры на обработку только этого канала
Если предоставляемых модулем событий недостаточно для реализации необходимого функционала, есть возможность создавать свои собственные.
Для этого необходимо:
- создать задачу (унаследоваться от абстрактного класса `InterMotion\Queue\Job\Base`)
- зарегистрировать задание на событии `registerJob`
Рабочий пример задания - `lib/job/example.php`
namespace InterMotion\Queue\Job;
use Psr;
use YiiSoft\Queue as YiiQueue;
// описание класса задания
class Example extends Base
{
/**
* @return string
*/
public function getChannel(): string
{
// в какой канал публикуем сообщение
return 'default';
}
/**
* @return string
*/
public function getJobId(): string
{
// внутренний идентификатор задания, для того, чтобы при чтении сообщений из канала можно было идентифицировать обработчик
// УНИКАЛЕН для каждого типа задания !!
return 'intermotion-queue-job-example';
}
/**
* @param YiiQueue\Message\MessageInterface $message
* @return void
* @throws \Exception
*/
public function execute(YiiQueue\Message\MessageInterface $message): void
{
$logger = $this->getLogger();
try
{
$logger->info('job started', [
'data' => $message->getData(),
'metadata' => $message->getMetadata(),
'handlerName' => $message->getHandlerName()
]);
// do nothing
// выполнение самой задачи
$logger->info('job complete');
}
catch (\Exception $exception)
{
$logger->error(
$exception->getMessage(),
[
'trace' => $exception->getTrace()
]
);
throw $exception;
}
}
}
// регистрируем задание
Main\EventManager::getInstance()->addEventHandler(
Queue\Config::getModuleName(),
'registerJob',
function(Main\Event $event): Main\EventResult {
return (new Main\EventResult(Main\EventResult::SUCCESS, [
'JOBS' => [
// класс задания, можно зарегистрировать сразу несколько
[ 'CLASS' => Queue\Job\Example::class ],
]
]));
}
); |
Решение поддерживает консольные команды `Symfony Console`:
1. Обработка всех существующих сообщений в определенных каналах. Завершается, когда заканчиваются сообщения.
Используется для разработки / отладки / запуске на менеджере запуска заданий `crontab`
php bitrix/modules/intermotion.queue/tools/console.php queue:run [channel1 [channel2 [...]]] --maximum 100 |
Аргументы и опции:
- channel - перечень каналов, сообщения из которых необходимо извлечь. По умолчанию - из всех каналов
- maximum - максимальное количество для обработки В КАЖДОМ канале. По умолчанию 0 - все сообщений
Используется для процесс-менеджера `supervisor`
php bitrix/modules/intermotion.queue/tools/console.php queue:listen [channel1 [channel2 [...]]] |
Аргументы:
- channel - перечень каналов, сообщения в которых необходимо слушать. По умолчанию - из всех каналов
По умолчанию создается лог-файл `queue.log` в корне модуля.
InterMotion
-
Запуск на хостинге
-
Индивидуальный дизайн
-
Наполнение контентом
-
Настройка
-
Адаптация под сферу деятельности
-
Поисковая оптимизация
Это шаблон сайта или интернет-магазина с домоконтентом, лид-формами и кнопками. Вы можете купить готовое решение для бизнеса и пользоваться им. Наши специалисты дорабатывают шаблоны под специфику вашего бизнеса.
Цена складывается из следующих элементов:
- шаблон дизайна;
- комплект цветовых схем;
- запрограммированные web-страницы;
- тестовый контент;
- структура меню;
- мастер установки.
Помимо готового решения, для создания сайта необходима CMS «Битрикс», а также аренда хостинга и домена.
Для каждого готового решения есть свой список подходящих версий CMS. Индивидуальный перечень представлен на странице программного продукта.
По функционалу редакции делят на 2 группы:
- для создания посадочных страниц и корпоративных сайтов;
- для разработки интернет-магазинов.
Лендинги и корпоративные сайты можно создать в редакциях «Старт» и «Стандарт». «Стандарт» имеет модуль проактивной защиты, который состоит из следующих элементов:
- инструмент для выполнения аудита;
- панель безопасности с разными степенями защиты;
- антивирусная программа;
- система одноразовых паролей;
- защита от DDoS-атак;
- журнал вторжений и др.
В перечисленных редакциях также можно создать интернет-магазин. Однако в них нет модуля корзины, который есть в других готовых решениях. Самая подходящая версия для разработки интернет-магазина ─ «Малый бизнес» и «Бизнес». Их можно интегрировать с 1С.
Редакция «Бизнес» подойдет:
- Интернет-магазинам с несколькими категориями клиентов, когда цена на один товар отличается для каждой из категорий (например, оптовые и розничные).
- При введении программ лояльности, скидочных и бонусных систем.
- Магазинам, которые продают комплекты товаров (основной товар + аксессуары).
- Компаниям, которые продают наборы из основного и актуального товара (последний не обязателен для использования основного продукта).
- Владельцам нескольких складов или офлайн-магазинов (сведения о наличии продукции нужно разместить в интернет-магазине).
В остальных случаях подходит версия «Малый бизнес». При необходимости ее можно расширить до редакции «Бизнес» за дополнительную плату.
Нет, чтобы установить решение нужна действующая лицензия, которая куплена не позднее 1 года назад. Спустя 12 месяцев лицензию необходимо продлить по льготному или стандартному тарифу.
Льготный период ─ 30 дней со дня окончания предыдущей лицензии, когда продление стоит 22% от полной цены. Продлить лицензию на стандартных условиях можно после завершения льготного периода. Стоимость составит 60% от базовой суммы.
Да, мы устанавливаем готовые решения. Для версии «Малый Бизнес» и выше установка бесплатная. Только предоставьте специалисту:
- ссылки на хостинг, логин и пароль для авторизации;
- доменное имя;
- лицензионный ключ «Битрикс»;
- купон для установки.
- После покупки вам на e-mail придет лицензионный ключ из 23 латинских буквы и цифр в формате: XXX-XX-XXXXXXXXXXXXXXXX. Зарегистрируйте его на сайте Битрикса.
- Скачайте установочный файл на компьютер.
- Войдите на официальный сайт веб-хостера, пройдите авторизацию.
- Войдите в файловый менеджер для загрузки установочного файла в корневую папку хостинга.
- Сформируйте базу данных.
- Перейдите по адресу тестового домена с помощью ссылки «имя-сайта/bitrixsetup.php».
- Выберите редакцию, лицензионный ключ которой пришел на e-mail.
- Вставьте полученный на электронную почту 23-значный код в поле «Лицензионный ключ». Нажмите «Загрузить».
- После фразы «Начало установки» на экране нажмите «Далее».
- Поставьте галочку напротив пункта «Я принимаю лицензионное соглашение» и кликните кнопку «Далее».
- Поставьте галочку напротив пункта «Я хочу зарегистрировать свою версию продукта». Заполните обязательные поля. Если создаете сайт на иностранном языке, отметьте пункт «Установить в кодировке UTF-8» и нажмите кнопку «Далее».
- На экране для предварительной проверки системы отобразятся показатели вашей редакции. Выделенные зеленым цветом значения отвечают требованиям, красным ─ не отвечают. Чтобы исправить несоответствующие показатели, обратитесь в техподдержку хостинг-провайдера.
- На экране «Создание базы данных» введите нужные сведения (база создается на хостинге).
- После заполнения всех обязательных полей можете создать администратора сайта.
- Воспользуйтесь шаблоном для установки. Выберите бесплатный шаблон или готовое решение.
Соблюдайте алгоритм:
- Установите на хостинг систему «Битрикс».
- Авторизуйтесь под доступами администратора, для этого перейдите по ссылке имя-сайта/bitrix.
- Перейдите в административную панель в разделе Marketplace и выберите подраздел «Обновление решений». Затем откройте вкладку «Активация купона».
- Купон ─ это 25 символов (цифры и заглавные буквы латинского алфавита). Введите купон и нажмите кнопку «Активировать купон».
- Когда в «Списке обновлений» появится название решения, поставьте галочку и загрузите его.
- Откройте вкладку «Установка обновлений» и установите их.
- Выберите название купленного решения и отметьте пункт «Загрузить».
- Найдите в «Настройках» подраздел «Список мастеров». Найдите название вашего решения и отметьте пункт «Установить».
- В появившемся мастере установки отметьте пункт «Существующий» и кликните «Далее».
- На экране «Выбор шаблона» нажмите «Далее».
- Выберите цветовую схему и кликните «Далее».
- Замените демоконтент и нажмите «Установить».
- На экране «Завершение настройки» кликните «Перейти на сайт».
Если у вас есть хостинг, это не всегда снижает цену. На практике встречаются ситуации, когда параметров хостинга не хватает для корректной работы и продвижения веб-ресурса. Если вы пользуетесь услугами хостинговых компаний Rusonyx, Timeweb или Ru-Center, цена уменьшится на сумму приобретения хостинга. В других случаях рекомендуем обсудить вопрос с менеджером.
Мы предлагаем простые тарифные планы для небольших бюджетных проектов.
Лицензия действует 12 месяцев со дня покупки и открывает владельцу дополнительные возможности:
Общие для всех продуктов:
- обновление продукта;
- получение новых версий: можно посмотреть популярные обновления для Управления сайтом и Битрикс24, а также частоту их выхода;
- приоритетная техподдержка: срочный ответ в течение шести рабочих часов;
- система резервного копирования в облако;
- использование Маркетплейса;
- конструктор «Сайты24».
Уникальные для «1С-Битрикс: Управления сайтом»:
- обновление системы безопасности;
- инспектор сайтов;
- ускорение загрузки сайта CDN;
- мобильное приложение администратора магазина для редакций «Малый бизнес» и «Бизнес»;
- автобюджет контекста в Яндекс.Директе;
- BigData: Персонализация;
- защита от DDoS.
Уникальные для «1С-Битрикс24»:
- работа телефонии;
- автозаполнение реквизитов по ИНН;
- работа открытых линий:
- настраивать и создавать Открытые линии можно без ограничений;
- онлайн-чат работает без ограничений;
- каналы коммуникаций исчезают из виджета CRM;
- сообщения на портал из настроенных каналов продолжают приходить;
- настроить каналы нельзя ─ будет выдаваться ошибка (кроме Онлайн-чата);
- нельзя ответить на сообщения, т.к. они не доставляются.
Даже если по истечении срока вы не продлите лицензию, сайт продолжит работать.
Рассмотрим юридическую сторону лицензирования. Послу оплаты покупатель получает сразу две лицензии:
- Стандартную. Позволяет пользоваться продуктом, обновлять его, устанавливать решения из Маркетплейса. Также владелец получает приоритетную техническую поддержку и другие возможности из приведенного выше списка. Стандартная лицензия действует один год, после чего ее нужно продлить.
- Ограниченную. Позволяет пользоваться продуктом без возможности обновления и установки решений из Маркетплейса. Эта лицензия вступает в силу по истечении срока Стандартной лицензии. При этом время оказания технической поддержки увеличивается до трех рабочих дней.
Ограниченную лицензию заключают по EULA (лицензионное соглашение с конечным пользователем) и не учитывают в бухгалтерском учете. Документ подтверждает право владельца на пользование программным продуктом по прошествии года с момента покупки.
Ограниченная лицензия активна в течение срока действия исключительных прав на программный продукт (по статье 1281 ГК РФ).
После оплаты лицензионного вознаграждения владелец получает право использования ПО (авторизационный код/ключ). В этом случае договор считается исполненным. В соответствии с п. 4 ст. 453 ГК РФ, «Стороны не вправе требовать возвращения того, что было исполнено ими по обязательству до момента изменения или расторжения договора, если иное не установлено законом или соглашением сторон».
Компания не поставляет продукты «1С-Битрикс» в коробках, на диске и других физических носителях.