中间件需要安装中间件调度扩展,支持普通PHP-FPM、Swoole协程、Workerman同异步。
安装方式:composer require usualtool/ut-middleware
1.普通调度
无需安装任何扩展,但并发性能较弱。其为多进程(靠FPM管理),一个请求阻塞不影响其他,适用于传统应用(CMS、博客等)。
2.Swoole协程
需要安装Swoole和ut-swoole扩展。协程+异步I/O(如 Co::sleep),不能使用阻塞函数(如 sleep(),file_get_contents),适用于高并发API、微服务。
拓展:Swoole使用方法
3.Workerman异步
需要安装Workerman或ut-workerman扩展。多进程+异步事件循环,可同步(默认)或异步(配合AsyncTcpConnection),适用于聊天服务器、推送服务、中等并发。
拓展:Workerman使用方法
三种调度方式优缺点对比
| 维度 | 普通调度(FPM) | Swoole协程模式 | Workerman异步 |
|---|---|---|---|
| 并发模型 | 多进程(请求隔离) | 单进程多协程(事件驱动) | 多进程 + 异步事件循环 |
| 最大并发能力 | 低(通常 < 500 RPS) | 极高(10,000+ RPS) | 高(5,000~10,000 RPS) |
| 内存占用 | 高(每请求独立进程) | 低(常驻内存,复用资源) | 中(每个 Worker 独立) |
| 启动开销 | 高(每次加载框架) | 低(Server 启动一次) | 低(Worker 启动一次) |
| I/O 处理 | 同步阻塞 | 协程异步(需适配) | 默认同步,可异步扩展 |
是否支持 exit |
是 | 否(会杀死 Worker) | 否 |
| 全局状态安全 | 安全(无共享) | 易污染(需小心) | Worker 内共享 |
| 开发复杂度 | 低(标准 PHP) | 高(需协程意识) | 中 |
| 调试难度 | 低 | 高(协程栈难追踪) | 中 |
| 部署要求 | 任意 LAMP/LNMP | 需安装 Swoole 扩展 | 需 CLI 环境,常驻进程 |
| 典型应用 | CMS、后台系统、博客 | 高并发 API、微服务、网关 | 聊天室、推送、游戏服务器 |