RoadRunner 应用服务器

来源:Go 语言 / 时间:2026-09-15

Modernizing PHP Applications with Golang

RoadRunner 用 Golang 写的高性能、开源 PHP 应用服务器 与 PHP 的常驻进程交互 显著提高性能
RoadRunner 为高并发和高性能的 PHP 应用 减少服务器资源的消耗

RoadRunner



核心功能与优势
RoadRunner 提供了许多强大的功能
高性能: 用 Golang 多线程和 Goroutines 技术 RoadRunner 显著提升请求处理速度 降低服务器负载
常驻进程:避免每次请求的启动时间和数据库连接创建时间 支持直接在进程中使用内存缓存
无需扩展:无需安装扩展 支持 PHP 7 及更高版本 能够快速集成到现有应用
HTTP 中间件:支持自定义中间件 请求到达 PHP 之前处理复杂任务 如限速或 JWT 解析
日志与监控:内置事件系统 用于收集日志、监控性能并处理错误
gRPC 支持:通过 PHP-GRPC 实现高性能的 API 通信
队列支持:支持内存队列、AMQP、Amazon SQS 和 Beanstalk 等队列系统


性能对比
RoadRunner 的性能显著优于 php-fpm
Plain Text(返回常量 JSON):php-fpm 处理 1150 RPS RoadRunner 处理 2200 RPS
Single Query(数据库查询结果返回 JSON):php-fpm 处理 530 RPS RoadRunner 处理 1600 RPS
性能提升 得益于常驻进程的设计 避免了启动时间和重复的数据库连接

使用场景与注意事项
RoadRunner 非常适合高并发、高性能的 PHP 应用

不是适用于所有场景
PHP 通常假设进程在每次请求后终止
因此在使用 RoadRunner 时需要特别注意内存泄漏
全局状态的管理 对于遗留项目 迁移到 RoadRunner 可能需要额外的代码调整

RoadRunner 还支持扩展功能
如通过 WebSocket 在 Golang 层直接处理部分请求 进一步提升性能和灵活性

部署与配置
RoadRunner
可以通过 Docker 快速部署
可以从源码构建 以下是一个简单的 Docker 示例

FROM php:7.2-cli
# 安装必要工具和依赖
RUN apt-get update && apt-get install -y --no-install-recommends

wget git vim zlib1g-dev unzip
# 安装 Go
RUN wget -O- https://dl.google.com/go/go1.27.1.linux-amd64.tar.gz | tar -C /usr/local -xzf -
ENV PATH $PATH:/usr/local/go/bin
ENV GO111MODULE on
# 安装 RoadRunner
WORKDIR /go/src
RUN git clone --depth 1 https://github.com/spiral/roadrunner
&& cd /go/src/roadrunner
&& make
&& make install

# 配置 PHP 和 Composer
COPY ./.rr.yaml /etc/roadrunner/.rr.yaml
RUN docker-php-ext-install zip opcache
&& docker-php-ext-enable opcache
&& php -r “copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’);”
&& php composer-setup.php
&& mv composer.phar /usr/local/bin/composer

WORKDIR /var/www
ENTRYPOINT [“/usr/local/bin/rr”, “serve”, “-c”, “/etc/roadrunner/.rr.yaml”]

通过上述配置 您可以快速启动一个 RoadRunner 环境并将其与 PHP 应用集成

RoadRunner 强大的 PHP 应用服务器 适合需要高性能和高并发的场景
通过常驻进程、内存缓存和 Golang 的高效特性 为 PHP 应用带来了显著的性能提升
使用时需要注意内存管理和全局状态问题

客服