热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php心跳检测实时数据,心跳检测·swoole手册·看云

#心跳注意:长链接应用必须加心跳,否则链接可能由于长时间未通讯被路由节点强行断开。心跳作用主要有两个:1、客户端定时给服务端发送点数据&#

# 心跳

注意:长链接应用必须加心跳,否则链接可能由于长时间未通讯被路由节点强行断开。

心跳作用主要有两个:

1、客户端定时给服务端发送点数据,防止连接由于长时间没有通讯而被某些节点的防火墙关闭导致连接断开的情况。

2、服务端可以通过心跳来判断客户端是否在线,如果客户端在规定时间内没有发来任何数据,就认为客户端下线。这样可以检测到客户端由于极端情况(断电、断网等)下线的事件。

使用Timer定时器功能可以实现发送心跳包的功能。事实上,Swoole已经内置了心跳检测功能,能自动close掉长时间没有数据来往的连接。而开启心跳检测功能,只需要设置heartbeat_check_interval和heartbeat_idle_time即可。如下:

~~~

$this->serv->set(

array(

'heartbeat_check_interval' => 60,

'heartbeat_idle_time' => 600,

)

);

~~~

* heartbeat_check_interval:启用心跳检测,此选项表示每隔多久轮循一次,单位为秒。如 heartbeat_check_interval => 60,表示每60秒,遍历所有连接,如果该连接在60秒内,没有向服务器发送任何数据,此连接将被强制关闭。

* heartbeat_idle_time:与heartbeat_check_interval配合使用。表示连接最大允许空闲的时间。

~~~

array(

'heartbeat_idle_time' => 600,

'heartbeat_check_interval' => 60,

);

~~~

表示每60秒遍历一次,一个连接如果600秒内未向服务器发送任何数据,此连接将被强制关闭

* 启用heartbeat_idle_time后,服务器并不会主动向客户端发送数据包

* 如果只设置了heartbeat_idle_time未设置heartbeat_check_interval底层将不会创建心跳检测线程,PHP代码中可以调用heartbeat方法手工处理超时的连接

* 在设置这两个选项后,swoole会在内部启动一个线程,每隔heartbeat_check_interval秒后遍历一次全部连接,检查最近一次发送数据的时间和当前时间的差,如果这个差值大于heartbeat_idle_time,则会强制关闭这个连接,并通过回调onClose通知Server进程。

## 高级用法:

使用swoole_server::heartbeat()函数手工检测心跳是否到期。此函数会返回闲置时间超过heartbeat_idle_time的所有TCP连接。程序中可以将这些连接做一些操作,如发送数据或关闭连接。



推荐阅读
  • 本文详细介绍了PHP中的回调函数及其多种实现方式,包括函数字符串、匿名函数、类静态方法和类方法。同时,探讨了闭包的概念及其在PHP中的应用,通过实例展示了如何利用闭包访问外部变量。 ... [详细]
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 使用Swoole的时候出现以下问题,如何解决呢?不是太懂,希望高手们能帮帮忙!谢谢了!是运行https://github.com/matyhtf/webim里的开源项目:matyh ... [详细]
  • 前言昨天,在本地安装Swoole调试环境的时候,遇到好几个坑,因为我的电脑是Windows系统,所以安装的是c ... [详细]
  •  在使用PHP多年之后,我对PHP的优势和劣势已经非常清楚,与后起之秀Golang相比,两者已经不在一个重量级。 PHP更像是70kg级别的选手,脚本语言,极速开发,部署方便,性能 ... [详细]
  • PHP语言之所以能有今天的地位,得益于PHP语言设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP语言入门简单,容易掌握,程序健壮性好。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 2023年最佳PHP开发学习路径推荐
    本文详细探讨了针对不同背景的学习者如何选择最适合自己的PHP开发学习资源,包括书籍、在线课程及培训机构的推荐。 ... [详细]
  • Redis安全防护深入解析
    本文详细探讨了如何通过指令安全、端口管理和SSL代理等措施有效保护Redis服务的安全性。 ... [详细]
  • 本文详细介绍了Linux操作系统中的cp和scp命令,包括它们的基本使用方法、常见选项以及如何通过scp命令安全地在不同主机之间传输文件。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • 本指南旨在帮助Swoole初学者快速掌握异步并发编程的基本概念和实践方法。通过实例演示,我们将使用Swoole PHP扩展构建一个简单的客户端与服务器模型,并实现基本的通信功能。首先,我们将从客户端的实现入手(文件名为:client.php)。 ... [详细]
  • 利用宝塔面板高效部署与使用Easyswoole框架详解
    本文详细介绍了如何在宝塔面板上高效部署和使用Easyswoole框架。以PHP 7.4和宝塔面板7.6为环境基础,首先配置了Swoole扩展,并禁用了`symlink`、`readlink`和`proc_open`三个潜在风险函数。接着,通过宝塔面板的便捷管理功能,顺利完成了Easyswoole框架的安装与初步配置,为开发者提供了高效、稳定的开发环境。 ... [详细]
  • MixPHP V2.1:从多进程架构转向单线程协程的深层原因与技术解析 ... [详细]
  • Swoole是针对PHP的生产级异步编程框架。它是一种用纯C语言编写的PHP扩展,它使PHP开发人员能够在PHP中编写高性能,可扩展的并发TCP ... [详细]
author-avatar
weizhe
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有