FrankenPHP 更适合小型项目。它为单二进制文件,集成 Caddy 与 PHP 运行时,启动只需一条命令,HTTPS 自动配置,原生支持 HTTP/2 和 HTTP/3;不依赖额外扩展或配置,仅需 PHP ≥ 8.1;与 Laravel Octane 开箱即用;进程结构扁平,资源占用更低。

FrankenPHP 更适合小型项目。
部署和维护更轻量
FrankenPHP 是一个单二进制文件,直接把 Caddy 和 PHP 运行时打包在一起。启动服务只需一条命令:frankenphp php-server,连 Nginx、PHP-FPM、certbot 都不用装,HTTPS 自动配置,HTTP/2 和 HTTP/3 原生支持。RoadRunner 虽然也是 Go 编写、常驻内存,但需要单独安装 rr 二进制,还要额外配置 .rr.yaml,对小项目来说多一层心智负担。
对 PHP 环境依赖更低
FrankenPHP 只要求 PHP ≥ 8.1,不依赖任何扩展(比如 sockets 或 swoole),也不需要修改 PHP 配置。RoadRunner 的 PHP Worker 必须启用 sockets 扩展,部分共享主机或受限环境可能无法开启,容易卡在初始化阶段。
与 Laravel Octane 集成更顺滑
如果你用 Laravel,FrankenPHP 是 Octane 官方推荐的“最轻量、开箱即用”选项。执行 php artisan octane:install --server=frankenphp 后基本无需调优。RoadRunner 虽然性能略高,但需手动管理 worker 生命周期、处理信号、调试 socket 连接异常,小团队往往没精力深挖这些细节。
立即学习“PHP免费学习笔记(深入)”;
资源占用更友好
FrankenPHP 进程结构更扁平:Caddy + PHP 在同一进程内协作,内存开销低,冷启动快。RoadRunner 是典型的主从架构(Go 主进程 + 多个 PHP Worker 子进程),在低配 VPS 或 Docker 环境中,父子进程通信、内存隔离反而带来轻微冗余。
当然,如果项目未来会快速扩张、需要精细控制并发模型或深度定制请求生命周期,RoadRunner 的灵活性更有优势。但就当下小型项目而言,FrankenPHP 省心、省事、够用。



















