Как я могу запустить команду как фоновую задачу в приложении Symfony?

Я должен настроить менеджер заданий для команды консоли, которую я создал.
Для выполнения команды консоли требуется от 20 до 30 минут.
Эта консольная команда записывает в базу несколько запросов, и давайте предположим, что ее нельзя сократить до меньшего времени.

Я все создал в Symfony2.8, но я действительно новичок в его использовании.
Так что я введите описание ссылки здесь

Все, что мне нужно, это запустить эту команду как фоновую задачу. Не трогая интерфейс приложения. Кто-нибудь может мне помочь?

Ах, все в порядке. Это необходимо делать регулярно, но по запросу пользователя / клиента.

1

Решение

Это очень сильно зависит от того, что нужно сделать.

Просто запустить один раз, только один раз? Войдите на сервер, используйте tmux или screen, чтобы что-то работало, даже если вы отключились, а затем запустите команду (bin/console name-of-command).

Запускается регулярно — поместите запись в crontab для пользователя, который должен его запустить.

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

2

Другие решения

Тебе нужно Компонент процесса.

Вы можете запустить php в фоновом режиме следующим образом:

$builder = new ProcessBuilder();
$builder->setPrefix('/usr/bin/php'); // put your php executable here
$cmd = $builder->setArguments(['/full/path/to/php/file/you/want/to/run.php', 'argumentOne', 'argumentTwo'])
->getProcess()
->getCommandLine();

$process = new Process($cmd . '  > /dev/null 2>&1 &'); // async trick here
$process->run();
1