本文目录导读:

- Swoole —— 底层核心(基础框架)
- Hyperf —— 全栈协程框架(当前首选)
- EasySwoole —— 轻量级快速开发框架
- Swoft —— 老牌协程框架(维护状态趋于平稳)
- Workerman —— 纯 PHP 常驻内存(无需扩展)
- MixPHP —— 高性能异步框架
- Amp / ReactPHP —— 异步非阻塞库(底层组件库)
- Laravel Octane / Symfony Runtime(非独立框架,但实现常驻)
- 总结与选型建议
PHP 常驻内存(Long-running)框架主要用于高性能网络服务(如 WebSocket 服务器、TCP 长连接服务、API 网关等)或命令行任务常驻(如队列消费者)。
由于 PHP 传统上是一次性(FPM)执行,常驻内存意味着代码加载后不会立即释放,这对内存泄漏控制和协程/异步支持有较高要求。
以下是目前主流的 PHP 常驻内存框架及基于 Swoole 的生态排行:
Swoole —— 底层核心(基础框架)
Swoole 是一个 C 扩展,但它是 PHP 常驻内存的基石,它本身提供了 Server、Coroutine(协程)、Channel(通道)等基础组件,很多框架都是基于它封装的。
- 特点:纯 C 实现,性能极高,支持协程,内置 HTTP/WebSocket/TCP 服务器。
- 适用:如果不想用重型框架,可以直接用 Swoole 原生 API 开发。
Hyperf —— 全栈协程框架(当前首选)
PHP 生态中最主流、最现代化的常驻内存框架,基于 Swoole 或 Swow 引擎。
- 特点:
- 全协程化(AOP 面向切面编程,依赖注入容器)。
- 代码风格与 Laravel 高度相似,上手成本低。
- 内置大量常用组件:ORM(模型关联)、Redis 连接池、分布式锁、消息队列注解(AMQ/Kafka)。
- 适用:微服务、RPC(gRPC/JSON-RPC)、WebSocket 服务、API 中间件。
- 社区:活跃度较高,定期发布社区版。
EasySwoole —— 轻量级快速开发框架
基于 Swoole 扩展,主打“简单、易用、高性能”。
- 特点:
- 组件化设计,不需要复杂的依赖注入容器。
- 提供了 HTTP、WebSocket、TCP/UDP 标准的服务封装。
- 内置
EasyTask(异步任务),适合做简单的异步处理。
- 适用:对性能有要求,但团队对面向对象代码规范要求不高的中型项目。
Swoft —— 老牌协程框架(维护状态趋于平稳)
比 Hyperf 出现得更早,曾非常火爆,但近年来社区活跃度有所下降。
- 特点:
- 基于 Swoole 协程的高性能框架,拥有类似 Spring Boot 的注解风格(如
@Controller、@Bean)。
- 基于 Swoole 协程的高性能框架,拥有类似 Spring Boot 的注解风格(如
- 适用:老项目维护,或团队喜欢重度注解风格的项目。
Workerman —— 纯 PHP 常驻内存(无需扩展)
如果你无法安装 Swoole(如共享主机),Workerman 是绝佳选择,它是纯 PHP 编写的事件驱动框架。
- 特点:
- 不依赖扩展,兼容性好,跨平台(Windows/Linux)。
- 支持多进程、多协程(Workerman 4.x 支持协程,但性能不如 Swoole 的 C 扩展)。
- 自带
GatewayWorker(专门做长连接通信)。
- 适用:WebSocket 即时通讯、物联网 TCP 网关、简单的定时任务(Crontab)。
MixPHP —— 高性能异步框架
一个相对小众但很不错的框架,底层可切换 Swoole 或 Workerman。
- 特点:追求极致的性能框架,采用类似于 Yii 的组件化设计。
- 适用:API 服务、HTTP 服务。
Amp / ReactPHP —— 异步非阻塞库(底层组件库)
这两个属于“库”级别,不是完整的 MVC 框架:
- ReactPHP:事件循环、流式处理(无协程,纯回调)。
- Amp:提供协程支持(
Promise/Coroutine),通常与amphp/amp和amphp/http-server组合使用。 - 适用:如果你需要高度定制,不想要重框架,可以用这些库构建常驻服务。
Laravel Octane / Symfony Runtime(非独立框架,但实现常驻)
这两个是在传统框架(Laravel/Symfony)之上实现常驻内存的解决方案:
-
Laravel Octane:基于 Swoole 或 RoadRunner(Go 编写),让 Laravel 应用常驻内存。
-
优点:保留 Laravel 生态,通过 Swoole 提升速度(跳过框架启动开销)。
-
缺点:仍需考虑全局状态污染问题(如静态变量、长生命周期容器)。
-
Symfony Runtime:Symfony 官方提供的运行时组件,可以配合 Swoole 实现常驻。
总结与选型建议
| 场景 | 推荐框架 |
|---|---|
| 微服务 / 业务复杂 / 大型团队 | Hyperf (协程+依赖注入,风格现代) |
| 极致性能 / 底层最接近 C 的 API | Swoole (原生) |
| 无法安装 Swoole 扩展 / 仅用 Workerman | Workerman (纯 PHP 最稳) |
| 传统 Laravel 项目需要提速 | Laravel Octane |
| 物联网 / 高并发 TCP 长连接 | EasySwoole (轻量) 或 Workerman/GatewayWorker |
⚠️ 重要提醒(常驻内存的坑): 使用常驻内存框架,代码在进程内不会回收,必须避免:
- 全局变量(
$GLOBALS、static变量)被污染(跨请求共享数据)。 - 连接泄漏(数据库、Redis 连接用完必须归还连接池)。
- 内存溢出(大数组用完后记得
unset,并配合gc_collect_cycles())。
如果你是新手,建议从 Workerman 开始,因为它是纯 PHP 环境调试简单;如果是高级应用,直接选 Hyperf 即可。