2021年5月24日14:34:05

golang roadrunner中文文档(一)基础介绍

golang roadrunner中文文档(二)PHP Workers

golang roadrunner中文文档(三)HTTPS 和 HTTP/2

golang roadrunner中文文档(四)app服务器

golang roadrunner中文文档(五)集成到其他服务 docker

 

官方文档:https://roadrunner.dev/docs/php-worker

目录

RoadRunner v1.0 的文档可在此处获得

  • 介绍
    • 它是什么?
    • 特征
    • 安装
    • 配置参考
    • 执照
  • PHP Workers
    • Workers
    • 环境
    • 开发者模式
    • 错误处理
    • 重启
    • 流程主管
    • RPC 到应用服务器
    • 注意事项
    • 调试
  • HTTP 和 HTTP/2
    • HTTP 和 HTTP/2
    • 静态内容
    • 标题
    • Golang 中间件
  • 应用服务器
    • CLI 命令
    • 日志记录
    • 自动重装
    • 生产用途
    • 编写 RR systemd 单元文件
    • Prometheus Metrics
    • 健康检查
    • 搭建服务器
    • RPC
    • 编写插件
    • 服务插件
  • 工作流引擎
    • 关于 Temporal.IO
    • 工人
  • 集成 V1
    • Migration from V1 to V2
    • CakePHP
    • Laravel
    • Slim
    • Spiral Framework
    • Symfony Framework
    • Symlex Framework
    • Ubiquity Framework
    • Zend Expressive
    • Yii2 and Yii3
    • Phalcon3 and Phalcon4
    • Mezzio
    • Chubbyphp Framework
    • All Composer Libraries
  • Docker
    • Ports and Containers
    • Available Images

 

它是什么?

RoadRunner 是用 Golang 编写的 PHP 应用程序的基础架构级框架。它以worker的形式运行您的应用程序。

高朗

在 Golang 端 RoadRunner 在goroutine上运行你的 PHP 应用程序, 并在多个 worker 之间平衡传入的有效负载。

golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker

可以从 HTTP 请求、AWS Lambda、队列或任何其他方式接收数据。

PHP

RoadRunner 在传入请求之间保持 PHP worker 处于活动状态。这意味着您可以完全消除引导加载时间(例如框架初始化)并大大加快繁重的应用程序。

golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker

由于 worker 位于常驻内存中,因此所有打开的资源将保持打开以供下一个请求使用。使用 Goridge RPC,您可以快速将一些复杂的计算卸载到应用服务器。例如,安排后台 PHP job。

关于RoadRunner

golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker golang roadrunner中文文档(一)基础介绍
    




golang roadrunner中文文档(一)基础介绍
golang roadrunner中文文档(二)PHP Workers
golang roadrunner中文文档(三)HTTPS 和 HTTP/2
golang roadrunner中文文档(四)app服务器
golang roadrunner中文文档(五)集成到其他服务 docker

RoadRunner 是一个开源(MIT 许可)、高性能 PHP 应用程序服务器、负载均衡器和进程管理器。它支持作为服务运行,能够在每个项目的基础上扩展其功能。RoadRunner 包括 PSR-7 兼容的 HTTP 服务器。

特征:

  • 生产就绪
  • 符合 PCI DSS
  • PSR-7 HTTP 服务器(文件上传、错误处理、静态文件、热重载、中间件、事件监听器)
  • HTTPS 和 HTTP/2 支持(包括 HTTP/2 Push、H2C)
  • 一个完全可定制的服务器,FastCGI 支持
  • 灵活的环境配置
  • 无外部 PHP 依赖(需要 64 位版本),嵌入式(基于Goridge
  • 负载平衡器、流程管理器和任务管道
  • 集成指标(Prometheus)
  • Temporal.io 的工作流引擎
  • 在 TCP、UNIX 套接字和标准管道上工作
  • 自动更换Worker 和安全的 PHP 进程销毁
  • Worker 创建/分配/销毁超时
  • 每个Worker 的最大工作量
  • Worker 生命周期管理(控制器)
    • maxMemory(优雅停止)
    • TTL(优雅停止)
    • idleTTL(优雅停止)
    • execTTL (brute, max_execution_time)
  • 有效负载上下文和正文
  • 协议、工作者和作业级错误管理(包括 PHP 错误)
  • 开发模式
  • 与 Symfony、Laravel、Slim、CakePHP、Zend Expressive 的集成
  • Spiral应用服务器
  • 文件更改时自动重新加载
  • 适用于 Windows(Windows 10 支持的 Unix 套接字 (AF_UNIX))

执照:

麻省理工学院许可证 (MIT)。请参阅LICENSE以获取更多信息。通过 SpiralScout。

安装

获取最新 RoadRunner 版本的最简单方法是使用预构建的发行版二进制文件之一,这些文件可用于 OSX、Linux、FreeBSD 和 Windows。使用这些二进制文件的说明位于 GitHub版本页面 上

通过 Composer 安装

您还可以使用 Composer 软件包附带的命令自动安装 RoadRunner,运行:

$ composer require spiral/roadrunner
$ ./vendor/bin/rr get

服务器二进制文件将在您的项目的根目录中可用。

PHP 的扩展php-curl并且php-zip需要自动下载 RoadRunner。

建造 RoadRunner

RoadRunner 可以在 Linux、OSX、Windows 和其他 64 位环境上编译,因为唯一的要求是Go 1.13+

要获取所有需要的依赖项:

$ go mod download

构建:

$ make

去测试:

$ make test

配置

每个 RoadRunner 插件都需要正确配置。默认情况下,此类配置会合并到一个文件中,该文件必须位于项目的根目录中。每个服务配置都位于指定部分下。配置文件必须命名为.rr.{format}格式所在的位置ymljson以及其他支持的spf13/viper.

配置参考

这是启用所有 RoadRunner 功能的完整配置参考。

rpc:
  # TCP address:port for listening.
  #
  # Default: "tcp://127.0.0.1:6001"
  listen: tcp://127.0.0.1:6001

# Application server settings (docs: https://roadrunner.dev/docs/php-worker)
server:
  # Worker starting command, with any required arguments.
  #
  # This option is required.
  command: "php psr-worker.php"

  # User name (not UID) for the worker processes. An empty value means to use the RR process user.
  #
  # Default: ""
  user: ""

  # Group name (not GID) for the worker processes. An empty value means to use the RR process user.
  #
  # Default: ""
  group: ""

  # Environment variables for the worker processes.
  #
  # Default: <empty map>
  env:
    - SOME_KEY: "SOME_VALUE"
    - SOME_KEY2: "SOME_VALUE2"

  # Worker relay can be: "pipes", TCP (eg.: tcp://127.0.0.1:6001), or socket (eg.: unix:///var/run/rr.sock).
  #
  # Default: "pipes"
  relay: pipes

  # Timeout for relay connection establishing (only for socket and TCP port relay).
  #
  # Default: 60s
  relay_timeout: 60s

# Logging settings (docs: https://roadrunner.dev/docs/beep-beep-logging)
logs:
  # Logging mode can be "development" or "production". Do not forget to change this value for production environment.
  #
  # Development mode (which makes DPanicLevel logs panic), uses a console encoder, writes to standard error, and
  # disables sampling. Stacktraces are automatically included on logs of WarnLevel and above.
  #
  # Default: "development"
  mode: development

  # Logging level can be "panic", "error", "warn", "info", "debug".
  #
  # Default: "debug"
  level: debug

  # Encoding format can be "console" or "json" (last is preferred for production usage).
  #
  # Default: "console"
  encoding: console

  # Output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
  #
  # Default: "stderr"
  output: stderr

  # Errors only output can be file (eg.: "/var/log/rr_errors.log"), "stderr" or "stdout".
  #
  # Default: "stderr"
  err_output: stderr

  # You can configure each plugin log messages individually (key is plugin name, and value is logging options in same
  # format as above).
  #
  # Default: <empty map>
  channels:
    http:
      mode: development
      level: panic
      encoding: console
      output: stdout
      err_output: stderr
    server:
      mode: production
      level: info
      encoding: json
      output: stdout
      err_output: stdout
    rpc:
      mode: production
      level: debug
      encoding: console
      output: stderr
      err_output: stdout

# Workflow and activity mesh service.
#
# Drop this section for temporal feature disabling.
temporal:
  # Address of temporal server.
  #
  # Default: "127.0.0.1:7233"
  address: 127.0.0.1:7233

  # Activities pool settings.
  activities:
    # How many worker processes will be started. Zero (or nothing) means the number of logical CPUs.
    #
    # Default: 0
    num_workers: 0

    # Maximal count of worker executions. Zero (or nothing) means no limit.
    #
    # Default: 0
    max_jobs: 64

    # Timeout for worker allocation. Zero means no limit.
    #
    # Default: 60s
    allocate_timeout: 60s

    # Timeout for worker destroying before process killing. Zero means no limit.
    #
    # Default: 60s
    destroy_timeout: 60s

    # Supervisor is used to control http workers (previous name was "limit", docs:
    # https://roadrunner.dev/docs/php-limit). "Soft" limits will not interrupt current request processing. "Hard"
    # limit on the contrary - interrupts the execution of the request.
    supervisor:
      # How often to check the state of the workers.
      #
      # Default: 1s
      watch_tick: 1s

      # Maximum time worker is allowed to live (soft limit). Zero means no limit.
      #
      # Default: 0s
      ttl: 0s

      # How long worker can spend in IDLE mode after first using (soft limit). Zero means no limit.
      #
      # Default: 0s
      idle_ttl: 10s

      # Maximal worker memory usage in megabytes (soft limit). Zero means no limit.
      #
      # Default: 0
      max_worker_memory: 128

      # Maximal job lifetime (hard limit). Zero means no limit.
      #
      # Default: 0s
      exec_ttl: 60s

  # Internal temporal communication protocol, can be "proto" or "json".
  #
  # Default: "proto"
  codec: proto

  # Debugging level (only for "json" codec). Set 0 for nothing, 1 for "normal", and 2 for colorized messages.
  #
  # Default: ?
  debug_level: 2

# HTTP plugin settings.
http:
  # Host and port to listen on (eg.: `127.0.0.1:8080`).
  #
  # This option is required.
  address: 127.0.0.1:8080

  # Maximal incoming request size in megabytes. Zero means no limit.
  #
  # Default: 0
  max_request_size: 256

  # Middlewares for the http plugin, order is important. Allowed values is: "headers", "static", "gzip".
  #
  # Default value: []
  middleware: ["headers", "static", "gzip"]

  # Allow incoming requests only from the following subnets (https://en.wikipedia.org/wiki/Reserved_IP_addresses).
  #
  # Default: ["10.0.0.0/8", "127.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16",  "::1/128", "fc00::/7", "fe80::/10"]
  trusted_subnets: [
      "10.0.0.0/8",
      "127.0.0.0/8",
      "172.16.0.0/12",
      "192.168.0.0/16",
      "::1/128",
      "fc00::/7",
      "fe80::/10",
  ]

  # File uploading settings.
  uploads:
    # Directory for file uploads. Empty value means to use $TEMP based on your OS.
    #
    # Default: ""
    dir: "/tmp"

    # Deny files with the following extensions to upload.
    #
    # Default: [".php", ".exe", ".bat"]
    forbid: [".php", ".exe", ".bat", ".sh"]

  # Settings for "headers" middleware (docs: https://roadrunner.dev/docs/http-headers).
  headers:
    

相关文章: