workerman 5.2.3 是一个不依赖 php-fpm 或 apache/nginx 的高性能纯 php 异步网络框架,支持开箱即用的 http 服务,可通过 composer 安装、stream 实现、内置 request/response 对象及多方法路由,适用于 api、微服务等轻量场景。

Workerman 5.2.3 是一个高性能的 PHP 异步网络通信框架,它不依赖 PHP-FPM 或 Apache/Nginx,可直接启动 HTTP 服务。创建 HTTP 接口服务非常轻量,适合构建 API、微服务或内部工具接口。
安装 Workerman 5.2.3
推荐使用 Composer 安装指定版本:
- 执行 composer require workerman/workerman:5.2.3(确保 Composer 已安装且 PHP ≥ 7.4)
- 安装后,vendor/autoload.php 会自动加载核心类
- 无需扩展(如 event、swoole),纯 PHP stream 实现,开箱即用
编写基础 HTTP 服务脚本
新建文件 http-server.php,内容如下:
<?php use Workerman\Worker;
use Workerman\Protocols\Http\Request;
use Workerman\Protocols\Http\Response;
require_once __DIR__ . '/vendor/autoload.php';
// 创建 HTTP Worker,监听 0.0.0.0:8080
$http_worker = new Worker("http://0.0.0.0:8080");
// 处理请求
$http_worker->onMessage = function ($connection, Request $request) {
// 示例:返回 JSON 接口
$data = [
'code' => 0,
'msg' => 'success',
'data' => ['time' => date('Y-m-d H:i:s')]
];
$connection->send(new Response(200, ['Content-Type' => 'application/json'], json_encode($data)));
};
// 运行服务(注意:CLI 模式下运行)
Worker::runAll();
-
Request 对象 提供
$request->get()、$request->post()、$request->header()等方法获取参数和头信息 - Response 构造器 支持状态码、响应头、响应体三参数,自动设置 Content-Length
- 支持 GET/POST/PUT/DELETE 等任意 HTTP 方法,通过
$request->method()判断
添加路由与简单中间件
Workerman 本身无内置路由器,但可通过判断路径手动实现:
// 在 onMessage 中添加
$path = $request->path();
if ($path === '/api/user' && $request->method() === 'GET') {
$connection->send(new Response(200, [], json_encode(['id'=>1, 'name'=>'Tom'])));
} elseif ($path === '/api/user' && $request->method() === 'POST') {
$post = $request->post();
$connection->send(new Response(201, [], json_encode(['status'=>'created', 'input'=>$post])));
} else {
$connection->send(new Response(404, [], 'Not Found'));
}
- 可封装简单路由函数,支持正则匹配或前缀分发(如
/api/*) - 若需鉴权,可在处理前检查
$request->header('Authorization')或 cookie - 日志建议用
file_put_contents('log.txt', ... , FILE_APPEND)或集成 Monolog
启动、守护与部署
在项目根目录执行:
-
开发启动:
php http-server.php start(加-d后台运行) -
查看状态:
php http-server.php status;重启:php http-server.php restart - 生产环境建议配合 supervisor 或 systemd 管理进程,防止意外退出
- 如需 HTTPS,Workerman 5.2.3 原生支持:将
http://改为https://,并传入context参数配置证书路径
不复杂但容易忽略:务必确认运行用户有文件读写权限,尤其是日志和 PID 文件;接口返回 JSON 时记得设 Content-Type: application/json,避免前端解析失败。











