AI Summary 5.20493.4 RoadRunner 摘要 2026-09-16
High-performance PHP application server, process manager written in Go and powered with plugins

RoadRunner helloworld

项目地址
https://github.com/roadrunner-server/roadrunner
RoadRunner 用Go语言编写的高性能PHP应用服务器和进程管理器
通过插件系统提供强大的扩展能力
作为传统Nginx+FPM架构的现代化替代方案
RoadRunner能够显著提升PHP应用的性能和并发处理能力


为什么选择RoadRunner?
RoadRunner提供比传统PHP-FPM更优秀的性能和更丰富的功能特性
支持HTTP/2/3、gRPC、队列系统、缓存服务等多种功能,让PH 轻松应对高并发场景

快速安装步骤

mkdir /data/roadrunner/helloworld/
cd /data/roadrunner/helloworld/

使用Composer安装(推荐)

composer require spiral/roadrunner-http nyholm/psr7 spiral/roadrunner-cli Spiral/RoadRunner --with-all-dependencies

./composer.json has been created
Running composer update spiral/roadrunner-cli
Loading composer repositories with package information
Updating dependencies
Lock file operations: 18 installs, 0 updates, 0 removals
…
- Installing spiral/roadrunner-cli (v2.2.0): Extracting archive
4 package suggestions were added by new dependencies, use composer suggest to see details.
Generating autoload files
14 packages you are using are looking for funding.
Use the composer fund command to find out more!
No security vulnerability advisories found.
Using version ^2.2 for spiral/roadrunner-cli

 ls -la

total 68
drwxr-xr-x 3 mg mg 96 Sep 15 19:27 .
drwxrwxrwx 5 www www 58 Sep 15 18:14 …
-rw-r–r-- 1 mg mg 67 Sep 15 18:17 composer.json
-rw-r–r-- 1 mg mg 53629 Sep 15 18:17 composer.lock
-rw-r–r-- 1 mg mg 166 Sep 15 19:26 .rr.yaml
drwxr-xr-x 7 mg mg 93 Sep 15 18:17 vendor
-rw-r–r-- 1 mg mg 513 Sep 15 19:27 worker.php

./vendor/bin/rr get-binary

安装完成后 RoadRunner二进制文件将出现在项目根目录

创建第一个 Worker
Worker 是一个具有持久化上下文的线程对象,通常用来在多个线程中使用
当一个 Worker 对象开始之后,会执行它的 run 方法,但是即使 run 方法执行完毕,线程本身也不会消亡,除非遇到以下情况:
Worker 对象超出作用范围(没有指向它的引用了)
代码调用了 Worker 对象的 shutdown 方法
整个脚本终止了
这意味着程序员可以在程序执行过程中重用这个线程上下文:
在 Worker 对象的栈中添加对象会激活 Worker 对象执行被加入对象的 run 方法

vi worker.php

创建简单的PHP worker 来处理HTTP请求

<?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);
}
}

vi .rr.yaml
a simple configuration file for RR. Open a text editor and create a new file called .rr.yaml.
Add the following content to the file

version: “3”
server:
command: “php worker.php”

http:
address: 0.0.0.0:8080

# Do not use development mode in production
logs:
level: debug
mode: development

$ ls
composer.json composer.lock vendor worker.php

配置完成后,使用以下命令启动RoadRunner服务器:
rr serve -c .rr.yaml

核心功能特性
高性能HTTP服务器:支持HTTP/1.1、HTTP/2、HTTP/3协议
gRPC支持:内置gRPC服务器功能
队列系统:支持RabbitMQ、Kafka、SQS等多种队列驱动
缓存服务:提供Redis、Memcached等缓存支持
监控指标:内置Prometheus指标收集
插件系统:丰富的插件生态,支持功能扩展

常见问题解决
如果遇到EOF错误,请检查:
是否正确安装了必要的PHP扩展
尝试直接运行php worker.php查看输出

进阶学习资源
配置文件示例:.rr.yaml
核心库文件:lib/roadrunner.go
容器配置:container/config.go
CLI命令:internal/cli/
RoadRunner为PHP开发者提供了一个现代化的应用服务器解决方案
简单的配置和强大的功能 让PHP应用能够轻松应对高并发场景