Как я могу выполнить команду как фоновую задачу в приложении Symfony? - PullRequest
0 голосов
/ 21 мая 2018

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

Я все создал в Symfony2.8, но я новичок в его использовании.Поэтому я введите здесь описание ссылки

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

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

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

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

Вы можете запустить 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();
0 голосов
/ 21 мая 2018

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

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

Работать регулярно - введите запись в crontab для пользователя, которому необходимозапустите его.

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

...