За последние 24 часа нас посетили 22537 программистов и 1015 роботов. Сейчас ищут 652 программиста ...

Промежуточное сохранение данных

Тема в разделе "PHP для новичков", создана пользователем Konstant1n, 17 окт 2019.

  1. Konstant1n

    Konstant1n Активный пользователь

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Привет!
    Создаю сервис анализа кое-чего по api. И тут у меня возник вопрос..
    И так, во время проверки я обращаюсь к 6-ти сервисам. По окончании проверки, сохраняю результат в json формате в БД. Если я сделаю асинхронный запрос к моим контроллерам, то мне надо сделать
    1. запрос №1: это обращение к сервису по api и сохранение результата в БД;
    2. далее дать ответ пользователю, что шаг 1 выполнен успешно;
    3. далее запрос №2: это получение результата запроса №1, обращение к сервисам по api и сохранение результата в БД (в ту же ячейку, что и в запросе №1)
    4. и т.д. как пункт 3
    5. запрос №6: это получение результата запроса №5, обращение к сервисам по api и сохранение результата в БД (в ту же ячейку, что и в запросе №1)
    6. вывод результата пользователю.
    Внимание: один из запросов, например, запрос №4 - формирование отчета, может занять несколько минут 1-5, в зависимости сколько у пользователя в сервисе данных. В этом случае, при первом обращении к сервису отчетов, если отчет не создан, сервис начнет формировать отчет и даст ответ мне "отчет формируется". при следующем запросе к сервису, я получу отчет либо опять сообщение "отчет формируется.

    Т.е. запрос-ответ 6 раз и обращение к БД 2*6=12 раз.
    1. Где лучше хранить промежуточные результаты? Итоговый я сохраню в БД.
    2. Может быть все это сделать одним асинхронным запросом к моему контроллеру?
    Только как уведомлять пользователя, что шаг такой-то выполнен, выполняется такой-то шаг, ждиде... и т.п.? Спасибо
     
  2. villiwalla

    villiwalla Активный пользователь

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Ну храни стейт в тойже записи где и данные апаешь. Уведомляться юзверя можно ws или воркером и пушами