0

这个想法是:而不是像这样直接在我们的命令行 中启动Mercure Hub 服务器:在此处输入图像描述

我们想通过使用symfony 命令使它更容易,因此我们可以像这样启动服务器: 在此处输入图像描述

注意:我们已经下载了与使 Mercure Hub 服务器工作的文件相对应的存档,我们在其中找到了可执行的mercure.exe并将其解压缩到 symfony 项目根目录中的“mercure 文件夹”中。

这是命令类在此处输入图像描述

它输出一个错误: 在此处输入图像描述

即使我们像可执行文件一样运行它: 在此处输入图像描述

它还输出错误: 在此处输入图像描述

那么我们如何解决这个问题并使其在 php 中工作。似乎它不能与绝对路径一起使用。

第二期:

假设我们成功通过了第一个问题,并且有一个替代方案(这对我来说不是首选,所以最好解决第一个问题),方法是添加一个必需的参数来指示 mercure.exe 所在的文件夹,如下所示: 在此处输入图像描述

所以我们修改我们的命令类: 在此处输入图像描述

输出显示以下错误: 在此处输入图像描述

JWT_KEY 无法识别,而当我们在命令行中键入完整命令时它可以正常工作。

那么,这两个问题的原因是什么以及如何解决它们?

4

1 回答 1

0

使用 Symfony 4.4 和 Mercure 0.13,工作代码:

$mercure = $this->projectDir."/mercure/mercure";
$caddyFile = $this->projectDir."/mercure/Caddyfile.dev";
$command = $mercure." run -config ".$caddyFile;        
$process = new Process($command);
$process->setTimeout(null);
$process->start();
$process->wait(function ($type, $buffer) {
    if (Process::ERR === $type) {
        echo 'ERR > '.$buffer;
     } else {
         echo 'OUT > '.$buffer;
     }
});
于 2021-12-24T16:17:06.897 回答