我需要异步运行一个命令。为此,我尝试使用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没有采用数组参数。
答案 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')