Workerman GatewayWorker心跳怎么配置

小宇小哥_1334

小宇小哥_1334

2026-09-01

699人浏览

原创

workerman gatewayworker 心跳需客户端、服务端、反向代理三层协同:gateway::pinginterval 设25~30秒且pingdata为合法json;events::onmessage首行必更新$connection->lastmessagetime;需timer::add主动清理超时连接;nginx proxy_read_timeout须同步调大至86400。

workerman gatewayworker心跳怎么配置

Workerman GatewayWorker 的心跳不是配个参数就完事的,必须客户端、服务端、反向代理三层同步动,漏一层就会断连。

Gateway::pingInterval 和 pingData 必须设对

Gateway 进程的心跳配置是起点,但只改这两个还不够。常见错误是把 pingInterval 设成 60 秒,结果被 Nginx 或运营商 NAT 先砍了;或者 pingData 写成 "ping" 这种非 JSON 字符串,前端解析失败直接静默断开。

  • pingInterval 建议设为 2530,不能大于中间件最短超时(如 4G 基站常为 60 秒)
  • pingData 必须是合法 JSON,例如 '{"type":"ping"}',不能带 PHP 变量插值或换行
  • 这个配置只影响 Gateway 进程自动发 ping 的行为,不替代业务层心跳逻辑

Events::onMessage 里必须无条件更新 lastMessageTime

很多人以为 Gateway 自动发 ping 就够了,其实服务端判断连接是否存活,靠的是每个 $connection->lastMessageTime 时间戳。而这个时间戳只能在 Events::onMessage() 里手动更新——而且必须第一行就写,不管消息是不是心跳、能不能 decode。

Unified LLM Gateway - One API for 70+ AI models. Route to GPT, Claude, Gemini, Qwen, Deepseek, Grok and more
Unified LLM Gateway - One API for 70+ AI models. Route to GPT, Claude, Gemini, Qwen, Deepseek, Grok and more

统一LLM网关 - 一个API对接70+AI模型,使用单一API密钥即可调用GPT、Claude、Gemini、Qwen、Deepseek、Grok等主流模型。

下载
  • 错误写法:if (json_decode($msg, true)['type'] === 'ping') { $connection->lastMessageTime = time(); }
  • 正确写法:$connection->lastMessageTime = time(); —— 放在 onMessage 函数最开头
  • 未绑定 UID 的匿名连接也得初始化该字段,否则定时器遍历时会触发 PHP Notice

要用 Timer::add() 主动清理超时连接

Workerman 不会自动关掉“假活”连接。Worker::$maxConnection 只管总数,不管真假。你得自己起一个定时器,周期性扫描并关闭超时连接。

  • 检查周期建议设为心跳间隔的 1.5~2 倍,比如 pingInterval=25,则检查设为 40
  • 超时阈值建议 ≤90 秒(容忍丢一次心跳),别用 60 硬卡,现实网络有抖动
  • 清理前务必加 if ($connection->isConnected()) 判断,否则 race condition 下 close 已断连接会报 warning

Nginx proxy_read_timeout 必须同步调大

再勤快的心跳也救不了没改 Nginx 的配置。默认 proxy_read_timeout 60s 意味着:哪怕客户端每 25 秒发一次 ping,第 61 秒 Nginx 就直接 FIN 断连,服务端收不到任何通知,前端只会看到 WebSocket is already in CLOSING or CLOSED state

  • 必须在 location 块里显式设置:proxy_read_timeout 86400;
  • 同时确认 proxy_send_timeout 也设为同等值,避免响应 pong 被截断
  • 如果用的是 AWS ALB 或腾讯云 CLB,注意它们不支持调大,得换用 NLB 或自建中转

真正容易被忽略的是:心跳逻辑必须侵入到每个数据入口点,而不是只在“收到 ping 时才动一下时间戳”。一旦漏掉某类原始二进制包、未 parse 的乱码消息、或协议升级过程中的握手帧,那个连接就会在下次扫描时被误杀。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

workerman gate

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
504 gateway timeout怎么解决
504 gateway timeout怎么解决

504 gateway timeout的解决办法:1、检查服务器负载;2、优化查询和代码;3、增加超时限制;4、检查代理服务器;5、检查网络连接;6、使用负载均衡;7、监控和日志;8、故障排除;9、增加缓存;10、分析请求。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.27

754

4

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.07

337

5

Workerman安装配置教程
Workerman安装配置教程

Workerman安装配置教程专题提供Workerman安装配置、WebSocket开发、TCP通信、异步编程、高并发服务搭建与PHP实时通信开发教程。

2026.05.20

146

15

Workerman实时通信与长连接开发教程
Workerman实时通信与长连接开发教程

WWorkerman实时通信与长连接开发教程聚合实时通信、聊天室、长连接、消息推送、AI流式输出等Workerman高并发开发内容。

2026.05.20

182

12

Workerman异步通信与TCP服务器开发
Workerman异步通信与TCP服务器开发

Workerman异步通信与TCP服务器开发专题整理Workerman异步通信、TCP服务、HTTP服务、WebSocket开发与高并发PHP服务器教程。

2026.05.20

127

13

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

2026.09.22

0

25

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

2026.09.21

20

20

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

2026.09.21

20

24

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

2026.09.21

0

20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webman中文手册
Webman中文手册

共0课时 | 0人学习

Workerman官方手册
Workerman官方手册

共0课时 | 0人学习

ThinkPHP5.1完全开发手册
ThinkPHP5.1完全开发手册

共0课时 | 0人学习