下面给你一份 Swoole 4.x Server 的「配置项 + 核心函数」完整速查与讲解,适合查文档 / 面试 / 实战部署使用。
内容基于 Swoole 4.x(稳定主流)


一、Swoole Server 是什么?

Swoole\Server 是一个 常驻内存的高性能网络服务器,支持:

  • TCP / UDP
  • HTTP / WebSocket
  • 多进程 + 异步 IO
  • 协程(4.x 之后是核心能力)

二、Server 创建方式

1️⃣ TCP Server

$server = new Swoole\Server("0.0.0.0", 9501);

2️⃣ HTTP Server

$server = new Swoole\Http\Server("0.0.0.0", 9501);

3️⃣ WebSocket Server

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);


三、Server 核心配置项(set)

$server->set([
    'worker_num'      => 4,
    'max_request'     => 10000,
    'daemonize'       => false,
    'dispatch_mode'   => 2,
]);


四、Server 配置项大全(重点)

① 进程相关(最重要)

配置说明
worker_numWorker 进程数(CPU核数×1~2)
reactor_numReactor 线程数
task_worker_numTask 进程数
max_request每个 worker 处理请求上限
max_request_grace平滑重启阈值

② 守护 / 日志

配置说明
daemonize是否守护进程
log_file日志文件路径
log_level日志级别
pid_filePID 文件

③ 网络 & 性能

配置说明
backloglisten 队列
open_tcp_nodelay关闭 Nagle
buffer_output_size输出缓冲
socket_buffer_sizeSocket 缓冲

④ TCP 粘包处理

配置用途
open_length_check长度协议
open_eof_checkEOF 协议
package_length_type包头类型
package_eofEOF 标识

⑤ HTTP / WebSocket

配置说明
enable_static_handler静态文件
document_root静态目录
http_compressiongzip
websocket_compressionWS 压缩

⑥ 协程(4.x 重点)

配置说明
enable_coroutine启用协程
max_coroutine最大协程数
hook_flags协程 Hook

五、Server 生命周期回调函数(必须掌握)

1️⃣ 服务器启动

$server->on('Start', function ($server) {
    echo "Server started\n";
});


2️⃣ Worker 启动(最常用)

$server->on('WorkerStart', function ($server, $workerId) {
    // 初始化数据库连接、Redis、容器
});


3️⃣ 接收数据(TCP)

$server->on('Receive', function ($server, $fd, $reactorId, $data) {
    $server->send($fd, "hello");
});


4️⃣ HTTP 请求

$server->on('Request', function ($request, $response) {
    $response->end("Hello Swoole");
});


5️⃣ WebSocket 事件

$server->on('Open', function ($server, $request) {});
$server->on('Message', function ($server, $frame) {
    $server->push($frame->fd, "pong");
});
$server->on('Close', function ($server, $fd) {});


6️⃣ Task 异步任务

$server->on('Task', function ($server, $taskId, $srcWorkerId, $data) {
    return "ok";
});

$server->on('Finish', function ($server, $taskId, $data) {});


六、Server 常用方法列表(速查)

① 启动 / 停止

方法说明
start()启动服务器
shutdown()关闭
reload()热重启
stop($fd)关闭连接

② 连接操作

方法说明
send($fd, $data)发送数据
close($fd)关闭连接
exists($fd)连接是否存在

③ Task / 进程

方法说明
task($data)投递任务
taskwait()同步任务
taskCo()协程任务
stats()服务器状态

④ WebSocket

方法说明
push($fd, $data)推送消息
isEstablished($fd)是否 WS

⑤ 定时器

Swoole\Timer::tick(1000, function () {
    echo "tick\n";
});


七、典型配置模板(生产建议)

$server->set([
    'worker_num' => swoole_cpu_num(),
    'task_worker_num' => 4,
    'max_request' => 5000,
    'daemonize' => true,
    'log_file' => '/var/log/swoole.log',
    'enable_coroutine' => true,
    'hook_flags' => SWOOLE_HOOK_ALL,
]);


八、Swoole 4.x 使用注意事项(血泪经验)

❗ 不要在 WorkerStart 里写阻塞 IO
❗ 不要使用 exit / die
❗ 数据库连接要 每个 worker 一份
❗ 全局变量 ≠ 线程安全
❗ 必须考虑 进程隔离


九、和 5.x 的关键区别(简要)

4.x
协程稳定
Hook手动配置
Server API主流
生态Hyperf

十、一句话总结

Swoole 4.x 的本质是:多进程 + 协程 + 事件驱动的常驻 PHP 服务引擎