Laravel: способ хранить / показывать сообщения при обработке действия - PullRequest
0 голосов
/ 04 мая 2020

У меня есть система, которая возвращает сообщения + объекты в конце обработки. 2 варианта:

  1. на экран (jQuery / VueJS), когда API вызывается с экрана
  2. для вызывающей стороны, как JSON / XML, когда вызывается API извне

Во время тестирования производственных данных я понял, что система генерирует слишком много сообщений и не хватает памяти. Так как входит в рекурсию. Несмотря на то, что, в конце концов, все количество сообщений не так велико, из-за довольно большого количества объектов, задействованных во время обработки, оно может взломать sh систему.

Структура вызова похожа на [{"cmd":"create object1"}]

  • object1 создано,
  • сообщение сохранено: success: object1 is created with id:##
    • в зависимости от object1 элементов найдено,
    • сообщение сохраняется: for object1 found X dependent objects, processing:
    • для каждого найденного элемента, система создает object1.item#n
    • сообщение сохраняется: started processing object1.item#n
      в зависимости от object1.item#n создаются подпункты и подобъекты, также создаются сообщения

    • сообщение сохраняется: finished processing object1.item#n
    • сообщение сохраняется: finished processing object1

Существует 2-4 уровня иерархии.

Я принимал следующие варианты:

  1. Сохраняйте каждое выходное сообщение как JSON в простой таблице БД / стеке Redis, что-то вроде «сеанса»: JSON. И "pu sh" это пользователю / запрашивающему телу в конце обработки (поскольку у нас все как синхронный процесс) / Вероятно, это может быть хорошим способом для запуска.

  2. Создайте очередь как-нибудь (возможно, это лучший способ, но я не очень хорош в очередях), где вход для следующего шага - это выход предыдущего, а "посередине" я могу сохранить сообщение.

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

...