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