Workerman 是 PHP 高性能异步非阻塞 Socket 框架,以常驻内存方式运行,支持 TCP/UDP/WebSocket,采用 Master-Worker 多进程与 I/O 多路复用,适用于实时通信、IoT 网关等长连接场景。

Workerman 是一个专为 PHP 设计的高性能、异步、非阻塞的 Socket 服务器框架。它不依赖 Nginx、Apache 或 PHP-FPM,而是让 PHP 程序以常驻内存的方式长期运行,直接监听端口、处理 TCP/UDP/WebSocket 等网络连接,从而支撑高并发、长连接类服务。
核心定位:让 PHP 做服务器程序
传统 PHP 多用于短生命周期的 Web 请求(如 HTTP 页面),而 Workerman 把 PHP 变成真正的后端服务程序——比如聊天服务器、实时通知系统、IoT 设备网关、RPC 服务等。它把 PHP 从“请求-响应”模型,拓展到了“持续监听-事件驱动”模型。
关键原理:多进程 + 事件轮询
- 采用 Master-Worker 多进程架构:Master 进程负责管理,Worker 进程实际处理连接和业务逻辑
- 底层基于 PHP 原生 socket 扩展,不依赖 libevent 或其他 C 扩展(纯 PHP 实现,兼容性好)
- 通过 select/poll/epoll/kqueue 等系统级事件机制实现 I/O 多路复用,单进程可轻松维持数万连接
- 所有网络操作(如 recv/send)都是非阻塞的,配合回调或协程风格写法,避免线程等待
典型适用场景
- WebSocket 聊天室、在线客服、协作白板等实时交互应用
- 内部微服务间 JSON-RPC 或自定义协议的通信服务
- 设备接入层:接收大量传感器、智能硬件的 TCP 心跳与数据上报
- 游戏服务器逻辑层(轻量级、非强实时要求的 MMO 或休闲游戏)
上手简单但需注意的点
- 不能直接用在普通 Web 环境下(比如放 Apache 的 htdocs 里跑不起来)——必须命令行启动:
php start.php start -d - 代码中不能写死 exit/die,也不能依赖 $_GET/$_POST/$_SESSION 等 CGI 特有变量
- 全局变量和静态属性在多进程下不共享,跨 Worker 通信需借助 Redis、消息队列或 Workerman 自带的
BusinessWorker机制 - 日志、异常、定时任务等需要显式配置,框架本身不内置 MVC 结构,更偏向“网络中间件”角色
基本上就这些。它不是用来替代 Laravel 或 ThinkPHP 的,而是补足 PHP 在长连接和高并发服务端能力上的短板。











