Symfony вызывает команду с контроллера в качестве фоновой задачи

Я хочу запустить консольную команду Symfony с контроллера. Как это сделать, объясняется в документация.

Теперь мой контроллер ждет, пока команда не завершится. Но я хочу, чтобы команда выполнялась как фоновая задача (например, cronjob). Таким образом, контроллеру не нужно ждать завершения команды, а только запустить ее.

Возможно ли это с помощью консоли Symfony?

Вы должны использовать механизм очередей. github.com/php-amqplib/RabbitMqBundle

Jasmin Mistry 17.07.2018 15:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
3
1
2 000
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, вам нужно использовать Компонент процесса и запустить такую ​​команду:

$process = new Process('php bin/console your:command');
$process->start();

Это именно то, что мне нужно! Я тоже искал exec(), но у него гораздо больше функций.

Timo002 17.07.2018 16:37

Это не работает, в symfony 4 есть новый способ сделать это ??

Sanjok Gurung 08.04.2019 11:41

Я взял этот пример из документации Symfony 4, и я использовал этот код в своих проектах, основанных на Symfony 4. И это сработало. Вы уверены, что используете start вместо run?

Nikita Leshchev 08.04.2019 15:30

Здравствуйте, я попробовал use Symfony\Component\Process\Process; $process = new Process('php bin/console app:import:records' . ' > NUL'); $process->run(); return new Response('successfully done', Response::HTTP_OK);, он возвращает только ответ, но команда между ними не выполняется. Кто-нибудь может помочь?

nas 14.05.2021 16:39

Другие вопросы по теме