sefkiss
@sefkiss
Обычный человек, интересуюсь всем)

Как выводить «статус» обработки экшена?

Привет,
есть экшен который проверяет существуют ли файлы для записей в БД - он работает
Но хотелось бы в момент выполнения видеть на каком этапе находиться обработка.
Знаю про виджет прогресс, но как ему передать данные? Ведь экшен еще полностью не отработал, и не отрендерил вьюху)
Спасибо!
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
Но хотелось бы в момент выполнения видеть на каком этапе находиться обработка


В момент выполнения экшена Вы никак не сможете этого сделать: когда Вы обращаетесь к экшену браузер формирует и отправляет соответствующий запрос, когда экшен завершает работу он возвращает браузеру ответ. Никаких промежуточных данных между этими двумя событиями не существует. Поэтому сделать отображение прогресса - это не 5 минут работы. Если все таки хотите это сделать тогда Вы можете реализовать функционал приблизительно так:
1. В момент обращения к экшену он просто запускает сторонний процесс по обработке(например с помощью того же сервера очередей) и возвращает ответ браузеру.
2. После этого на клиентской стороне идет мониторинг. Для этой задачи например можно использовать WebSocket для связи клиента с сервером (можно конечно и аяксом опрашивать состояние процесса, но это есть костыль)
3. После получения информации о процессе загрузки - осуществляеться его вывод пользователю на уровне javascript
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@entermix
Можно записывать промежуточные результаты в базу данных, например, а уже оттуда читать и отдавать клиенту.

Ели делать по феншую - использовать фоновые задачи/очереди, но принцип такой же.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы