PHP常驻内存框架有哪些

wen PHP项目 1

本文目录导读:

PHP常驻内存框架有哪些

  1. Swoole —— 底层核心(基础框架)
  2. Hyperf —— 全栈协程框架(当前首选)
  3. EasySwoole —— 轻量级快速开发框架
  4. Swoft —— 老牌协程框架(维护状态趋于平稳)
  5. Workerman —— 纯 PHP 常驻内存(无需扩展)
  6. MixPHP —— 高性能异步框架
  7. Amp / ReactPHP —— 异步非阻塞库(底层组件库)
  8. Laravel Octane / Symfony Runtime(非独立框架,但实现常驻)
  9. 总结与选型建议

PHP 常驻内存(Long-running)框架主要用于高性能网络服务(如 WebSocket 服务器、TCP 长连接服务、API 网关等)或命令行任务常驻(如队列消费者)。

由于 PHP 传统上是一次性(FPM)执行,常驻内存意味着代码加载后不会立即释放,这对内存泄漏控制协程/异步支持有较高要求。

以下是目前主流的 PHP 常驻内存框架及基于 Swoole 的生态排行:

Swoole —— 底层核心(基础框架)

Swoole 是一个 C 扩展,但它是 PHP 常驻内存的基石,它本身提供了 ServerCoroutine(协程)、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)。
  • 适用:老项目维护,或团队喜欢重度注解风格的项目。

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/ampamphp/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

⚠️ 重要提醒(常驻内存的坑): 使用常驻内存框架,代码在进程内不会回收,必须避免:

  1. 全局变量$GLOBALSstatic 变量)被污染(跨请求共享数据)。
  2. 连接泄漏(数据库、Redis 连接用完必须归还连接池)。
  3. 内存溢出(大数组用完后记得 unset,并配合 gc_collect_cycles())。

如果你是新手,建议从 Workerman 开始,因为它是纯 PHP 环境调试简单;如果是高级应用,直接选 Hyperf 即可。

抱歉,评论功能暂时关闭!