ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

roadrunner中文文档(二)PHP Workers

2021-06-08 13:01:23  阅读:322  来源: 互联网

标签:roadrunner php http RR 0.0 Workers worker PHP


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

标签:roadrunner,php,http,RR,0.0,Workers,worker,PHP
来源: https://www.cnblogs.com/zx-admin/p/14862341.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有