从控制器方法中,我想在后台运行 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 上。
当我转储进程并执行手动显示的命令时,一切正常。