首页 » 网站推广 » phpswoole心跳技巧_Swoole心跳检测

phpswoole心跳技巧_Swoole心跳检测

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

心跳:心脏还在跳动,解释还有生命迹象,还活着,还活着就表示还可以连续事情,生命不止,事情不息。

why

为什么须要心跳检测?这个小孩没娘,说来话长,long long ago ,TCP协议的出身,惊天地泣鬼神,改变了天下。

phpswoole心跳技巧_Swoole心跳检测

建立连接:三次握手

phpswoole心跳技巧_Swoole心跳检测
(图片来自网络侵删)

建立连接

断开连接:四次挥手 ‍♂️

断开连接

趣解:

寓言两则:(client、server的精彩对话)。
此故事纯属虚构,如有雷同,不好意思。

人物一:小C(client 客户端)

人物二:大S (server 做事端)

场景一:初识(建立连接 ——三次握手)

小C:很高兴认识你,我想和你处工具。

大S:看你挺有诚意的,我赞许

小C:收到对方的复书,欣喜若狂,赶紧再说:“你等着我啊,立时咱们就(美好的生活)”;

(第一次握手:客户端发送旗子暗记,我准备发送数据,客户端进入准备发送状态)

(第二次握手:做事端收到旗子暗记,并给客户端复书,做事端进入准备吸收状态)

(第三次握手:客户端收到复书,进入已连接状态,并给做事端确认,做事端收到,两端都进入建立连接状态)

场景二:依依惜别 (断开连接——四次挥手)

小C:我不想和你说话了,

大S:你是在开玩笑吧,

大S:(看到小C负责的脸庞,知道这不是玩笑),好吧

小C:你赞许就好,再见。
(看这大S伤心而去,容身一段韶光,自己也离开了)

(第一次挥手:客户端发出关闭要求,此时不在发送数据。

(第二次挥手:做事端收到要求并确认,做事端进入等待关闭状态——把自己想说的话,说完)

(第三次挥手:做事端向客户端发送确认关闭旗子暗记,此时不再发送数据,进入末了确认关闭状态)

(第四次挥手:客户端收到关闭要求,向做事端规复信息,做事端关闭。
客户端会在稍后关闭)

详情查看:https://blog.csdn.net/qq_37837134/article/details/79738329

上面大略理解了TCP协议,那么有没有这样一种场景呢:只建立连接,而不断开连接

答案是肯定的,在繁芜的网络环境中,这种情形一定存在。
例如:夏天用电高峰期负载高,断电了;我的家里刚通网,还是不很好,时常在高潮的时候莫名其妙的断网……

总之,无缘无端的不辞而别,总是存在的,没有那么完美的爱情。

what

心跳机制:客户端定时发送 ping,做事端回答 pong。

ping、 pong 无分外意义,便是大略的通讯传输,朋友之间常联结,才不会生疏。
韶光久了,做事端就要把你踢了,人的精力总是有限的,有的时候,整理自己的心情,会删除一些无用的通讯录。

做事真个资源也是有限的,那么就要把没用的fd 收回,重复利用。

fd 是什么?

fd (file descriptor) 文件描述符

统统皆文件,fd 就相称于索引,拿着这个标示去进行一系列操作。

swoole 中

$fd是TCP客户端连接的标识符,在Server实例中是唯一的,在多个进程内不会重复fd 是一个自增数字,范围是1 ~ 1600万,fd超过1600万后会自动从1开始进行复用$fd是复用的,当连接关闭后fd会被新进入的连接复用正在坚持的TCP连接fd不会被复用

不要担心,同一台做事1600万的fd 不足自己用,由于做事器承受不了1600万的连接,如果真有这么多连接,肯定也便是单机了。

How

swoole 实际上已经实现了心跳检测机制,咱们只须要去开启配置就行了。
如此方便,不得不赞,峰哥威武!

heartbeat_check_interval心跳检测 每隔多少秒,遍历一遍所有的连接heartbeat_idle_time心跳检测 最大闲置韶光,超时触发close并关闭 默认为heartbeat_check_interval的2倍,两倍是容错机制,多一点是网络延迟的填补

官方文档:https://wiki.swoole.com/wiki/page/283.html

当然,心跳机制也可以自己实现,定期轮询fd,是否在线,记录最近回话韶光,剔除超时的连接。

伪代码

结合业务

fd 是一个连接,怎么和用户userId 绑定 —— 映射

userID1 --> fd 1

userID2 --> fd 2

预报:下篇讲 结合业务的映射 设计

映射

结束语

生命不止,学习不息

左手代码,右手诗,意见意义学习新知识

标签:

相关文章