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 之间平衡传入的有效负载。

可以从 HTTP 请求、AWS Lambda、队列或任何其他方式接收数据。
PHP
RoadRunner 在传入请求之间保持 PHP worker 处于活动状态。这意味着您可以完全消除引导加载时间(例如框架初始化)并大大加快繁重的应用程序。

由于 worker 位于常驻内存中,因此所有打开的资源将保持打开以供下一个请求使用。使用 Goridge RPC,您可以快速将一些复杂的计算卸载到应用服务器。例如,安排后台 PHP job。
  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))
 
执照:
LICENSE 
  
 获取最新 RoadRunner 版本的最简单方法是使用预构建的发行版二进制文件之一,这些文件可用于 OSX、Linux、FreeBSD 和 Windows。使用这些二进制文件的说明位于 GitHub版本页面 上。
通过 Composer 安装
您还可以使用 Composer 软件包附带的命令自动安装 RoadRunner,运行:
$ composer require spiral/roadrunner
$ ./vendor/bin/rr get 
 服务器二进制文件将在您的项目的根目录中可用。
php-curlphp-zip 
 建造 RoadRunner
RoadRunner 可以在 Linux、OSX、Windows 和其他 64 位环境上编译,因为唯一的要求是Go 1.13+。
要获取所有需要的依赖项:
$ go mod download 
 构建:
$ make 
 去测试:
$ make test
 
  
 .rr.{format}ymljsonspf13/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: