roadrunner中文文档(二)PHP Workers

2021年6月8日12:51:06

Workers

为了运行您的 PHP 应用程序,您必须创建一个工作端点并配置 RoadRunner 以使用它。首先,使用Composer安装所需的包。

composer require spiral/roadrunner nyholm/psr7

使用 PSR-7 服务器 API 的最简单入口点可能如下所示:

<?php

use Spiral\RoadRunner;
use Nyholm\Psr7;

include "vendor/autoload.php";

$worker = RoadRunner\Worker::create();
$psrFactory = new Psr7\Factory\Psr17Factory();

$worker = new RoadRunner\Http\PSR7Worker($worker, $psrFactory, $psrFactory, $psrFactory);

while ($req = $worker->waitRequest()) {
    try {
        $rsp = new Psr7\Response();
        $rsp->getBody()->write('Hello world!');

        $worker->respond($rsp);
    } catch (\Throwable $e) {
        $worker->getWorker()->error((string)$e);
    }
}

这样Workers将期望通过标准管道与父 RoadRunner 服务器进行通信,创建.rr.yaml配置以启用它:

server:
  command: "php psr-worker.php"

http:
  address: 0.0.0.0:8080
  pool:
    num_workers: 4

如果您不喜欢yaml尝试.rr.json

{
  "server": {
    "command": "path-to-php/php psr-worker.php"
  },
  "http": {
    "address": "0.0.0.0:8080",
    "pool": {
      "num_workers": 4
    }
  }
}

您现在可以通过下载 RR 二进制文件并运行来启动应用程序 rr serve

替代沟通方式

PHP Workers 将利用标准管道 STDOUT 和 STDERR 与 RR 服务器交换数据帧。在某些情况下,您可能希望使用替代通信方法,例如 TCP 套接字:

server:
  command: "php psr-worker.php"
  relay: "tcp://localhost:7000"

http:
  address: 0.0.0.0:8080
  pool:
    num_workers: 4

Unix 套接字:

server:
  command: "php psr-worker.php"
  relay:  "unix://rr.sock"

http:
  address: 0.0.0.0:8080
  pool:
    num_workers: 4

故障排除

在某些情况下,RR 将无法处理 PHP worker 产生的错误(PHP 丢失、脚本死机等)。

$ rr serve
DEBU[0003] [rpc]: started
DEBU[0003] [http]: started
ERRO[0003] [http]: unable to connect to worker: unexpected response, header is missing: exit status 1
DEBU[0003] [rpc]: stopped

您可以通过手动调用command set in .rrfile来解决它:

$ php psr-worker.php

在提供任何输入之前,工作人员不应导致任何错误,并且必须在第一个输入字符后以无效输入签名失败。

其他类型的Workers

不同的roadrunner 实现可能会定义自己的worker API,例如:GRPCWorkflow/Activity Worker

 

环境配置

所有 RoadRunner 工作人员都将继承可用于父服务器进程的系统配置。此外,你可以自定义设置ENV变量传递到使用部分你的工人env.rr配置文件。

server:
  command: "php worker.php"
  env:
     key: value

所有键都将自动大写!

默认 ENV 值

RoadRunner 提供了一组 ENV 值来帮助 PHP 进程识别如何与服务器正确通信。

钥匙 描述
RR_MODE 确定工作模式应该使用的模式(“http”,“temporal”)
RR_RPC 启用时包含 RPC 连接地址。
RR_RELAY “管道”或“tcp://...”,取决于服务器中继配置。

 

 

 

 

 

 

11111

上一篇:螺旋矩阵


下一篇:【Python报错】RuntimeError: DataLoader worker (pid(s) 9764, 15128) exited unexpectedly