コントローラ メソッドから、バックグラウンドで 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 で発見されています。
プロセスをダンプし、手動で表示されたコマンドを実行すると、すべてが機能します。