Workerman 5.2.3 必须启用 pcntl 和 posix 扩展以支持多进程与信号处理;推荐 event(高并发)、redis(消息/状态存储)、sockets(底层通信);可选 openssl、pdo_mysql/mysqli、mbstring;Windows 下自动降级为单进程。

Workerman 5.2.3 对 PHP 扩展的要求延续了其核心设计原则:依赖轻量、稳定、跨平台,但必须支持多进程与事件驱动。它本身是纯 PHP 编写的框架,不强制要求 Zend 扩展(如 Swoole),但pcntl 和 posix 是硬性前提,缺一不可。
必须启用的 PHP 扩展
-
pcntl:用于实现多进程管理(fork 子进程、信号处理、子进程退出监控等)。没有它,Workerman 无法启动多个 worker 进程,只能单进程运行(
count => 1且无法自动重启异常进程)。 -
posix:配合 pcntl 使用,提供进程组、用户/组 ID 操作、信号常量定义等功能。缺失会导致
pcntl_*函数调用失败或行为异常。
强烈推荐启用的扩展
event(Linux/macOS):当并发连接数预期超过 1000 时,建议安装。它基于 libevent 提供更高效的事件轮询(epoll/kqueue),替代 PHP 默认的
select,显著提升高并发下的 I/O 性能。
安装后需在php.ini中添加extension=event.so。-
redis:非 Workerman 自身必需,但绝大多数在线客服、聊天、会话路由场景都依赖 Redis 做消息中转、用户状态存储、房间管理等。官方 demo 和主流集成方案(如 ThinkPHP + Workerman)默认使用 Redis。
立即学习“PHP免费学习笔记(深入)”;
sockets:PHP 内置扩展,通常默认开启。Workerman 底层 socket 操作依赖它。若被禁用(
disable_functions=sockets_create等),会导致监听失败。
可选但实用的扩展
- openssl:用于 WebSocket wss、TLS 加密通信、MQTT over TLS 等安全场景。
- pdo_mysql / mysqli:业务逻辑中连接 MySQL 时需要,Workerman 本身不直接使用,但实际项目几乎必用。
- mbstring:处理中文、emoji、UTF-8 字符串时避免乱码,尤其在消息解析和日志记录中很关键。
验证方式(命令行执行)
php -m | grep -E "pcntl|posix|event|redis|sockets"
全部出现即满足基础运行条件。若缺失 pcntl 或 posix,即使其他扩展齐全,Workerman 启动时会直接报错 Function pcntl_fork() is not available 或类似提示。
注意:Windows 下从 Workerman 3.5.3 起已原生支持,无需 cygwin,但 pcntl 和 posix 在 Windows 上不可用 —— 框架会自动降级为单进程模拟模式(仅限开发调试,不可用于生产)。



















