最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Swoole v4.7 版本新特性预览之支持为每个端口设置不同的心跳检测时间

    正文概述 转载于:掘金(沈唁)   2021-07-05   262

    在之前的版本中,多端口监听的心跳检测功能只能配置在主服务上,无法为每个端口单独设置心跳时间。

    例如需要在9501端口上设置 30 秒,而9502端口上设置 60 秒。从v4.7版本开始进行了支持,下面来详细了解一下。

    配置项

    Server 中提供了两个配置项:heartbeat_check_intervalheartbeat_idle_time

    可以使用如下配置项增加心跳检测:

    $server->set([
        'heartbeat_check_interval' => 60,
        'heartbeat_idle_time'      => 120,
    ]);
    

    heartbeat_check_interval 表示每隔多久轮循一次,单位为秒。如 heartbeat_check_interval => 60,表示每 60 秒遍历所有连接。

    如果该连接在 120 秒内(heartbeat_idle_time 未设置时默认为 interval 的两倍),没有向服务器发送任何数据,此连接将被强制关闭。

    heartbeat_idle_time 表示连接最大允许空闲的时间。

    示例

    这里提供了一个多端口监听的代码用于测试,分别为不同的端口设置心跳检测:

    use Swoole\Server;
    
    $server = new Server('127.0.0.1', 9501, SWOOLE_BASE);
    $server->set([
        'heartbeat_check_interval' => 1,
        'heartbeat_idle_time' => 1,
    ]);
    $server->on('connect', function ($server, $fd) {
        $time = date('Y-m-d H:i:s');
        echo "[{$time}] Client#{$fd}: Connect.\n";
    });
    $server->on('receive', function ($server, $fd, $reactorId, $data) {
        $server->send($fd, 'ok');
    });
    $server->on('close', function ($server, $fd) {
        $time = date('Y-m-d H:i:s');
        echo "[{$time}] Client#{$fd}: Close.\n";
    });
    
    $port2 = $server->listen('127.0.0.1', 9502, SWOOLE_SOCK_TCP);
    $port2->set([
        'heartbeat_idle_time' => 2,
    ]);
    
    $port3 = $server->listen('127.0.0.1', 9503, SWOOLE_SOCK_TCP);
    $port3->set([
        'heartbeat_idle_time' => 10,
    ]);
    
    $server->start();
    

    可以使用telnet或者 Swoole 的 TCP 户端进行测试。

    这里使用了telnet进行测试,分别连接 3 个端口

    telnet 127.0.0.1 9501
    telnet 127.0.0.1 9502
    telnet 127.0.0.1 9503
    

    使用 v4.6 版本进行测试会输出:

    [2021-07-05 10:06:44] Client#1: Connect.
    [2021-07-05 10:06:45] Client#2: Connect.
    [2021-07-05 10:06:46] Client#3: Connect.
    [2021-07-05 10:06:46] Client#1: Close.
    [2021-07-05 10:06:47] Client#2: Close.
    [2021-07-05 10:06:48] Client#3: Close.
    

    连接 123 都是在 2 秒之后的断开的。

    那么再使用最新的v4.7版本进行测试:

    [2021-07-05 10:02:50] Client#1: Connect.
    [2021-07-05 10:02:51] Client#2: Connect.
    [2021-07-05 10:02:51] Client#1: Close.
    [2021-07-05 10:02:52] Client#3: Connect.
    [2021-07-05 10:02:53] Client#2: Close.
    [2021-07-05 10:03:02] Client#3: Close.
    
    • 连接 11 秒之后断开;
    • 连接 22 秒之后断开;
    • 连接 310 秒之后断开。

    这样的输出结果符合所配置的心跳检测配置,需要使用该功能的用户可以进行升级体验。


    起源地下载网 » Swoole v4.7 版本新特性预览之支持为每个端口设置不同的心跳检测时间

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元