Workerman 5.2.3 是纯 PHP 常驻进程框架,安装需五步:环境检查→补齐扩展→下载代码→编写启动脚本→启动服务;要求 PHP CLI ≥7.4、启用 pcntl/posix,推荐 event 扩展。

Workerman 5.2.3 是纯 PHP 编写的常驻进程框架,不依赖 Web 服务器(如 Nginx/Apache)即可直接监听端口。在 Linux 上安装它,核心是「环境检查 → 补齐扩展 → 下载代码 → 编写启动脚本 → 启动服务」五步,无需编译安装。
确认 PHP 环境满足最低要求
Workerman 5.2.3 要求:
- PHP CLI 版本 ≥ 7.4(推荐 8.0+,5.2.x 已不再兼容 PHP 5.x 或 7.2 及以下)
- 必须启用 pcntl 和 posix 扩展(多进程基础)
- 建议启用 event 扩展(高并发场景必备,>1000 连接时显著提升性能)
执行检测脚本验证:
curl -Ss https://www.workerman.net/check | php若提示 pcntl 或 posix 为 ❌,请按系统安装:
-
CentOS/RHEL/Alibaba Cloud Linux:
yum install php-process -y(适用于 yum 安装的 PHP) -
Ubuntu/Debian:
apt-get install php-cli php-dev php-mbstring -y,再手动编译 pcntl(如需) - 若 PHP 是源码编译或通过第三方仓库(如 ondrej/ppa)安装,请确认 configure 参数含
--enable-pcntl --enable-posix
下载并部署 Workerman 5.2.3 代码
Workerman 不提供全局 Composer 包式安装(v5 起官方推荐直取源码),推荐方式如下:
- 进入你的项目根目录(例如
/data/www/myapp) - 执行:
wget https://github.com/walkor/Workerman/archive/refs/tags/v5.2.3.tar.gz
或使用 git:
git clone -b v5.2.3 https://github.com/walkor/Workerman.git - 解压后重命名为
Workerman(保持路径简洁):
tar -xzf v5.2.3.tar.gz && mv Workerman-5.2.3 Workerman
注意:不要用 composer require workerman/workerman 安装 v5.2.3 —— 官方已将 Packagist 主包切换至 v4 兼容分支,v5 需手动获取 tag 源码。
编写一个最小可运行的 server.php
在项目根目录新建 server.php,内容如下(以 HTTP 服务为例):
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$http = new Worker('http://0.0.0.0:8080');
$http->count = 2;
$http->onMessage = function($connection, $request) {
$connection->send("Workerman 5.2.3 running OK");
};
Worker::runAll();
保存后,在终端执行:
php server.php start看到 Workerman[server.php] start success... 即启动成功。可用 curl http://127.0.0.1:8080 测试响应。
生产环境启动与管理
调试模式(前台运行)适合开发;生产务必用守护进程模式:
- 后台启动:
php server.php start -d - 停止服务:
php server.php stop - 平滑重启(不中断连接):
php server.php reload - 查看状态:
php server.php status
如需开机自启,建议用 systemd 管理(非 nohup 或 screen)。创建 /etc/systemd/system/workerman.service:
[Unit] Description=Workerman server After=network.target [Service] Type=simple User=www-data WorkingDirectory=/data/www/myapp ExecStart=/usr/bin/php /data/www/myapp/server.php start -d Restart=always RestartSec=3 [Install] WantedBy=multi-user.target
然后执行:
systemctl daemon-reload && systemctl enable workerman && systemctl start workerman


















