从控制器方法,我想在后台运行Symfony命令。
public function collaboratorsSendInvitationsAction($company_id)
{
$process = new Process(
'php ' . $this->get('kernel')->getRootDir() . '/console nd:company send-invitations --id ' . $company_id
);
$process->start();
return $this->redirectToRoute('collaborators_list', [
'company_id' => $company_id,
]);
}
这个过程似乎有效,因为如果我执行$process->getPid();
,我会得到一个pid,但命令不会被执行。
我已经调查过,做过几次测试,然后得出以下结果:
当我对类Process.php($this->status = self::STATUS_STARTED;
)的第290行进行注释时,将执行该命令。如果不是,没有任何反应。
有没有人遇到过这个问题?是什么导致这个?我指定使用Symfony 2.8.28和PHP 7.1.10。问题出现在MacOS和Ubuntu Server上。
当我转储进程并执行手动显示的命令时,一切正常。