Я хочу запустить консольную команду Symfony с контроллера. Как это сделать, объясняется в документация.
Теперь мой контроллер ждет, пока команда не завершится. Но я хочу, чтобы команда выполнялась как фоновая задача (например, cronjob). Таким образом, контроллеру не нужно ждать завершения команды, а только запустить ее.
Возможно ли это с помощью консоли Symfony?




Я думаю, вам нужно использовать Компонент процесса и запустить такую команду:
$process = new Process('php bin/console your:command');
$process->start();
Это именно то, что мне нужно! Я тоже искал exec(), но у него гораздо больше функций.
Это не работает, в symfony 4 есть новый способ сделать это ??
Я взял этот пример из документации Symfony 4, и я использовал этот код в своих проектах, основанных на Symfony 4. И это сработало. Вы уверены, что используете start вместо run?
Здравствуйте, я попробовал 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);, он возвращает только ответ, но команда между ними не выполняется. Кто-нибудь может помочь?
Вы должны использовать механизм очередей. github.com/php-amqplib/RabbitMqBundle