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,運行:
$ 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}
格式所在的位置yml
,json
以及其他支持的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).