Symfony Process Component - 为命令设置输入参数

时间:2016-08-17 16:15:46

标签: php asynchronous command symfony

我需要异步运行一个命令。为此,我尝试使用Process Component。

我尝试启动的命令是调用需要某些参数的函数。这些参数由启动Process的Controller给出。

问题是我不知道如何使用Process Component将参数传递给我的命令。

命令:

print('Do you want to go to the store or woods?')

lists = ('woods', 'store')
while True:
    answers = input()
    if answers == 'store':
        print('Going to the store...')
        break
    elif answers == 'woods':
        print('Going to the woods...')
        break
    elif answers not in lists:
        print('That is not a valid answer')
    else:
        # some default case, for example sys.exit() (needs sys to be imported)

控制器:

protected function configure()
{
    $this
        ->setName('generationpdf:classement')
        ->setDescription('Génère le PDF d\'un classement.');
}

protected function execute(InputInterface $input, OutputInterface $output)
{
    ini_set('memory_limit','4000M');
    $pdf = $this->imprimerAction();
    $this->sendClassement($pdf);
    $output->writeln('PDF envoyé.');
}

我需要使用的参数是在ArrayInput中,但是Process没有采用数组参数。

1 个答案:

答案 0 :(得分:1)

process期望第一个参数为字符串。

示例:

$process = new Process('ls');

要运行命令,您需要执行symfony console命令

$process = new Process('/var/www/my-project/bin/console generationpdf:classement')
  

您无需对路径进行硬编码,请参阅how-to-get-the-root-dir

您可以正常传递parameters,例如从cli

运行命令
$process = new Process('/var/www/my-project/bin/console generationpdf:classement --id=5 --errata=someValue')