Symfony 进程 - 从服务执行命令
Symfony Process - execute command from service
我怎样才能运行一个命令(app/console execute:my:command)
通过新流程在服务中?
我试试这个:
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
$process = new Process(
'app/console execute:my:command'
);
$process->start();
但是什么也没发生...
如果我通过终端手动调用它,它会起作用:
app/console execute:my:command
我做错了什么?
EDIT - Solution: We need to write the whole path. In my case:
($this->kernelRootDir is : %kernel.root_dir%)
$processString = sprintf(
'php %s/../app/console %s %s',
$this->kernelRootDir,
self::MY_COMMAND,
$myArgument
);
$process = new Process($processString);
$process->start();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
这几乎就是您真正需要做的所有事情。我总是设置工作目录并假设这是必需的,因此 Symfony 命令是来自项目根目录的 运行
$process = new Process(
'app/console execute:my:command'
);
$process->setWorkingDirectory(getcwd() . "../");
$process->start();
出于调试目的,我通常设置
$process->setOptions(['suppress_errors' => false]);
还有
我怎样才能运行一个命令(app/console execute:my:command) 通过新流程在服务中?
我试试这个:
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
$process = new Process(
'app/console execute:my:command'
);
$process->start();
但是什么也没发生... 如果我通过终端手动调用它,它会起作用:
app/console execute:my:command
我做错了什么?
EDIT - Solution: We need to write the whole path. In my case:
($this->kernelRootDir is : %kernel.root_dir%)
$processString = sprintf(
'php %s/../app/console %s %s',
$this->kernelRootDir,
self::MY_COMMAND,
$myArgument
);
$process = new Process($processString);
$process->start();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
这几乎就是您真正需要做的所有事情。我总是设置工作目录并假设这是必需的,因此 Symfony 命令是来自项目根目录的 运行
$process = new Process(
'app/console execute:my:command'
);
$process->setWorkingDirectory(getcwd() . "../");
$process->start();
出于调试目的,我通常设置
$process->setOptions(['suppress_errors' => false]);
还有