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


    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

    最新稳定版本
     
     
    构建状态
     
    去报告卡
     
    审查员代码质量
     

    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,运行:

    1. $ composer require spiral/roadrunner
    2. $ ./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 功能的完整配置参考。

    1. rpc:
    2. # TCP address:port for listening.
    3. #
    4. # Default: "tcp://127.0.0.1:6001"
    5. 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: 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: 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:
  • 相关阅读:
    pragma once与ifndef的区别
    【PAT(甲级)】1047 Student List for Course(超时问题)
    springboot整合其他项目
    golang记录一下Reflect包Type类型NumMethod的一个小问题
    linux源码安装postgresql以及smlar插件
    Jmeter进阶使用指南-使用参数化
    ARM开发流程相关工具简介
    如何在python中实现capl语言里的回调函数
    extern "C"的使用
    Github 最新霸榜,号称架构师修炼之路的“葵花宝典”限时开源
  • 原文地址:https://blog.csdn.net/zh7314/article/details/127734825