Модульность

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Модульность

Сообщение german.igortcev »

День добрый.Пытаюсь решить вопрос с структурой в приложении.

Есть основная сущность в приложении "сайт". Задача подключать различные интеграции к сайту из доступных. Каждую интеграцию хочу сделать отдельным модулем и помещать всю логику и связные данные в таблицу модуля. Со стороны сайта все вроде просто то можем сделать составную таблицу между интеграциями и сайтом.

Логику в интеграциях/модулях можно разделить на две части
  • 1 Единовременно
    2 Ежедневно

Пример

Модуль SiteMap
Модуль должен получать с удаленного сайта sitemap и парcить его добавляя страницы к сайту

Сайт
При добавлении нового сайта или раз в день запускать какие то действия в подключённых модулях для этого сайта. В частности запускать парсер в модуле Sitemap


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

События
В Site делаем событие EVENT_SITE_CREATED

В модуле Sitemap реализуем BootstrapInterface где вешаем обработчики на событие EVENT_SITE_CREATED через статический метод Event::on()
где внутри обработки проверяем подключен ли этот модуль к текущему сайту и выполняем handler который описан ниже к примеру


Поделитесь своими вариантами реализации если кто то делал подобное
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Модульность

Сообщение unknownby »

german.igortcev писал(а): 2021.06.14, 15:16 Есть основная сущность в приложении "сайт". Задача подключать различные интеграции к сайту из доступных. Каждую интеграцию хочу сделать отдельным модулем и помещать всю логику и связные данные в таблицу модуля. Со стороны сайта все вроде просто то можем сделать составную таблицу между интеграциями и сайтом.

Логику в интеграциях/модулях можно разделить на две части
  • 1 Единовременно
    2 Ежедневно

Пример

Модуль SiteMap
Модуль должен получать с удаленного сайта sitemap и парcить его добавляя страницы к сайту

Сайт
При добавлении нового сайта или раз в день запускать какие то действия в подключённых модулях для этого сайта. В частности запускать парсер в модуле Sitemap
Таким не занимался, но если подумать, то можно реализовать по разному.
Например, при добавлении любой интеграции к сайту после сохранения запускать сразу интеграцию (очередь).
Указать для каждой интеграции возможные варианты реализации их. Единовременно и (или) ежедневно.
Если ежедневно нужно запускать, то лучшим будет запуск CRON-а или отложенная очередь. При выполнении очереди в конце выполнения ещё раз создавать задачу и кидать её в очередь.
Если единовременно, то кидаем в очередь на выполнение.

При удалении интеграции - удаляем из очереди отложенные задачи.
Ответить