Symfony2使开发人员能够创建自己的命令行命令.它们可以从命令行执行,也可以从控制器执行.根据Symfony2官方文档,可以这样做:
protected function execute(InputInterface $input,OutputInterface $output) { $command = $this->getApplication()->find('demo:greet'); $arguments = array( ... ); $input = new ArrayInput($arguments); $returnCode = $command->run($input,$output); }@H_404_3@但在这种情况下,我们等待命令完成它的执行并返回返回码. @H_404_3@我怎样才能从控制器执行命令将其分配到后台而无需等待它完成执行? @H_404_3@换句话说,相当于什么
$nohup PHP app/console demo:greet &
根据文档,我认为没有这样的选择:
http://api.symfony.com/2.1/Symfony/Component/Console/Application.html
@H_404_3@但是关于你想要实现的目标,我认为你应该使用流程组件:
use Symfony\Component\Process\Process; $process = new Process('ls -lsa'); $process->run(function ($type,$buffer) { if ('err' === $type) { echo 'ERR > '.$buffer; } else { echo 'OUT > '.$buffer; } });@H_404_3@正如文档中所提到的“如果您希望能够实时获得一些反馈,只需将匿名函数传递给run()方法”. @H_404_3@http://symfony.com/doc/master/components/process.html