Существует множество способов справиться с подобным сценарием.Один из способов - смоделировать работу в терминах «процесса», который содержит «статус», включая процент выполнения.
Если вы представляете, как это может выглядеть на веб-сайте, нажмите кнопку, чтобы начатьпроцесс отправляет форму, которая начинает процесс и присваивает какой-то идентификатор процессу, почти так же, как если бы вы создавали какой-либо другой объект.Затем он перенаправит вас на страницу «Состояние процесса».
Страница состояния процесса запросит состояние процесса и отобразит его.Вероятно, он имеет параметр URL для идентификатора процесса.Возможно, он обновит себя с помощью вызова AJAX, чтобы вернуть процент выполнения.
В бэкэнде теперь вам нужно решить пару проблем: выяснить текущее состояние процесса N и обновить состояние процессаN. Это можно сделать несколькими способами, включая сохранение прогресса в базе данных или наличие какой-либо таблицы выполняемых заданий в памяти.Вы также можете использовать какую-то эвристику, чтобы оценить процент.Например, если это задание «зарегистрировать нового пользователя», возможно, оно выполнено на 20%, если в таблице пользователя есть адрес электронной почты, на 40%, если в таблице аватаров пользователя есть данные для этого пользователя и т. Д. Я не рекомендуюэто столько.