symfony4: запуск и отслеживание хода выполнения длинной фоновой задачи - PullRequest
0 голосов
/ 28 января 2019

У меня есть приложение symfony4, в котором есть компонент обработки бэкэнда, выполнение которого занимает несколько минут.На данный момент он запускается с помощью bash-скрипта и нескольких консольных команд Symfony.

Я хотел бы иметь возможность запустить этот процесс в веб-интерфейсе и отображать его ход (и не допускать этого).он запускается снова, пока еще выполняется).

Фоновая задача не должна принимать никаких параметров, она считывает все необходимые данные из базы данных.

Поскольку внутренний процесс занимает много времени,Я не хочу, чтобы веб-страница зависала во время работы.Веб-интерфейс должен запустить его, а затем отключить.Пользователь намерен вернуться позже, чтобы проверить результаты.

Я не смог найти решение в документации Symfony или на этом сайте.

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Вы можете использовать компонент мессенджера для длинных фоновых задач.

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

0 голосов
/ 28 января 2019

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

Когда вы возвращаете этот идентификатор запрашивающей стороне фоновой задачи, он может легко запросить этот идентификатор транзакции и его статус, когда вы хотите увидеть обновление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...