正常情况下客户端中断TCP连接时,会发送一个FIN包,进行4次断开握手来通知服务器。但一些异常情况下,如客户端突然断电断网或者网络异常,服务器可能无法得知客户端已断开连接。
尤其是移动网络,TCP连接非常不稳定,所以需要一套机制来保证服务器和客户端之间连接的有效性。
Swoole扩展本身内置了这种机制,开发者只需要配置一个参数即可启用。Swoole在每次收到客户端数据会记录一个时间戳,当客户端在一定时间内没有向服务器端发送数据,那服务器会自动切断连接。
使用方法:
上面的设置就是每5秒侦测一次心跳,一个TCP连接如果在10秒内没有向服务器端发送数据,将会被切断。
高级用法:
使用swoole_server::heartbeat()函数手工检测心跳是否到期。此函数会返回闲置时间超过heartbeat_idle_time的所有TCP连接。程序中可以将这些连接做一些操作,如发送数据或关闭连接。
CRMEB多商户商城系统基于ThinkPhp6+ swoole4+uniapp 开发的一套CRMEB新零售多商户商城系统。
CRMEB系统就是集客户关系管理+营销电商系统,能够真正帮助企业基于公众号、小程序、wap、pc等,实现会员管理、数据分析,精准营销的电子商务管理系统。可满足企业新零售、批发、分销、预售、O2O、商铺入驻等各种业务需求。
CRMEB的优势:快速积累客户、会员数据分析、智能转化客户、有效提高销售、会员维护;