3

コントローラ メソッドから、バックグラウンドで 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 で発見されています。

プロセスをダンプし、手動で表示されたコマンドを実行すると、すべてが機能します。

4

0 に答える 0