Swoole 心跳检测

Swoole的心跳检测特别简单,只需要配置 heartbeat_check_interval,heartbeat_idle_time就可以了。

heartbeat_check_interval:表示服务器隔几秒检测超时。要小于heartbeat_idle_time。

heartbeat_idle_time 表示超多少时间就会断开

示例代码演示了,5s检测,如果有10s内未向服务器端发送数据,将会被切断

<?php
date_default_timezone_set(‘Asia/Shanghai‘);
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new swoole_server("127.0.0.1", 9501);

$serv->set([
    ‘heartbeat_check_interval‘ => 5,
    ‘heartbeat_idle_time‘ => 10,
]);

//监听连接进入事件
$serv->on(‘connect‘, function ($serv, $fd) {
    echo "[".date(‘Y-m-d H:i:s‘)."]Client: Connect.\n";
});

//监听数据接收事件
$serv->on(‘receive‘, function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "[".date(‘Y-m-d H:i:s‘)."]Server: ".$data);
});

//监听连接关闭事件
$serv->on(‘close‘, function ($serv, $fd) {
    echo "[".date(‘Y-m-d H:i:s‘)."]Client: Close.\n";
});

//启动服务器
$serv->start();

cli端开启服务。

客户端访问

客户端先发一个请求,时间是2018-08-23 11:39:23,后面就不发了

服务端在2018-08-23 11:39:33 就断开了客户端的连接。刚好是10s

原文地址:https://www.cnblogs.com/gavinjunftd/p/9522922.html

时间: 2024-10-17 08:59:29

Swoole 心跳检测的相关文章

Swoole 实例四(心跳检测)

服务器端 server.php <?php /* Swoole已经内置了心跳检测功能,能自动close掉长时间没有数据来往的连接. 而开启心跳检测功能,只需要设置heartbeat_check_interval和heartbeat_idle_time即可.如下: $this->serv->set(     array(         'heartbeat_check_interval' => 60,         'heartbeat_idle_time' => 600,

netty心跳检测 heartbeat(五)

HeartBeat心跳 心跳检测的必要性  1.集群心跳检测,避免网络中断 2.数据同步:主节点写日志,从节点每隔一段时间拉取主节点日志. 心跳检测存在的意义: 客户端和服务端已经建立了长连接,客户端开飞行模式,关机,关闭wifi,服务端不会(感知)收到通知(handRemoved)并关闭连接. 核心事件 : ChannelInboundHandlerAdapter类的userEventTriggered事件 心跳检测服务端代码 : server启动类 : 1 public class Hear

AndroidPN中的心跳检测

在AndroidPN客户端里存在着心跳检测功能.就是每隔一段时间客户端向服务器端发送一个消息,以检测连接是否正常,发送的消息内容为: <presence id="h09Ke-13"></presence> 心跳检测频率时间在SmackConfiguration类中设置: 心跳检测任务的定义及开启在PacketWriter类中: 心跳检测的流程: 1.按心跳时间定时向服务发送心跳数据包: 2.如果发送失败,抛出发送失败的异常: 3.这个异常将被Persistent

Netty实现服务端客户端长连接通讯及心跳检测

通过netty实现服务端与客户端的长连接通讯,及心跳检测.        基本思路:netty服务端通过一个Map保存所有连接上来的客户端SocketChannel,客户端的Id作为Map的key.每次服务器端如果要向某个客户端发送消息,只需根据ClientId取出对应的SocketChannel,往里面写入message即可.心跳检测通过IdleEvent 事件,定时向服务端放送Ping消息,检测SocketChannel是否终断.         环境JDK1.8 和netty5      

c#网络通信框架networkcomms内核解析之四 心跳检测

在网络通信程序中,心跳检测是必不可少的,我们来看一下networkcomms中是如何实现的 以networkcomms2.3.1为例: 在服务器端,会有一个线程专门用来发送心跳消息 代码如下: protected static void TriggerConnectionKeepAliveThread() { lock (staticConnectionLocker) { if (!shutdownWorkerThreads && (connectionKeepAliveWorker ==

介绍开源的.net通信框架NetworkComms框架之五 心跳检测

原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是:Apache License v2 开源地址是:https://github.com/MarcFletcher/NetworkComms.Net 我们知道TCP连接建立之后,如果没有心跳检测,连接一会就断开了.NetworkComms框架本身已经完美实现了心跳检测,我们在使用的时候不用再关心这个问

windows cluster 心跳检测阀值优化

通过cmd命令Cluster.exe /prop查看当前群集的属性信息,其中心跳阀值相关属性: SameSubnetDelay:同一子网中的节点的测信号频率 SameSubnetThreshold: 同一子网中的节点的延迟的阈值 CrossSubnetDelay: 不同的子网中的节点的检测信号频率 CrossSubnetThreshold: 在不同的子网中的节点的延迟的阈值 SameSubnetDelay 默认代表每1秒执行一次Windows群集心跳检测,SameSubnetThreshold

Netty实践(四):心跳检测实现

心跳检测的概念 在分布式架构中,比如Hadoop集群,Storm集群等,或多或少都涉及到Master/Slave的概念,往往是一个或者多个Master和N个Slave之间进行通信.那么通常Master应该需要知道Slave的状态,Slave会定时的向Master进行发送消息,相当于告知Master:"我还活着,我现在在做什么,什么进度,我的CPU/内存情况如何"等,这就是所谓的心跳.Master根据Slave的心跳,进行协调,比如Slave的CPU/内存消耗很大,那么Master可以将

EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服务器的心跳检测

回到目录 上一讲中基本实现了对数据库的读写分离,而在选择只读数据库上只是随机选择,并没有去检测数据库服务器是否有效,如服务器挂了,SQL服务停了,端口被封了等等,而本讲主要对以上功能进行一个实现,并对配置文件也进行了一些优化,让它更好的支持多个数据库服务器,分别配置各个的账号和密码及数据库服务端口等等,接下来,就来看一下主要的代码吧. 一 配置文件 <!-- ef实现对sql读写分离的配置,sqlserver端采用发布与订阅实现 --> <add key="readDb&quo