由服务端发送消息给客户端的时候会添加一个Timer防止客户端未响应该消息,当客户端回复该消息的时候会删除这个Timer。但是有时候会存在没删除Timer的情况,所以有以下几个疑问。 client_id在onConnect以后就常驻在这个进程里不变了吗? 这个client_id添加的Timer和这个client_id是在同一个进程吗? 频繁的添加和删除Timer是导致删除Timer失败的原因吗?...
当服务端不要求客户端必须回应心跳检测时,假如客户端遇到掉电等极端情况,这时服务端向客户端发送的心跳数据在TCP层面就会发送超时,遇到这种超时情况TCP会重试多次(次数及间隔依赖操作系统的配置),多次无果后会断开连接。这种极端情况从连接断开到服务端检测到可能要持续至少10分钟才触发onClose事件回调。 可以通过以下的设置来缩短超时情况下的断线吗? $ vim /etc/sysctl.conf net.ipv...
有几个疑问,不知道是不是造成内存持续增长的原因 以下是大致的消息处理流程 在 Events.php 里,每秒发送数据的次数在3-8次左右,每次发送的数据量不大。 设备有两种数据处理方式 其中一类处理,频繁的数据转发到组。 另一类处理,频繁的操作redis(出队入队)、更新session数据。 条件成立时 创建1-2个一次性的定时器,写入数据库或者发送邮件 写数据到数据库里 推送数据到组中的随机一个用户 不知道...
2017-11-16 09:17:43 pid:22974 worker exit with status 11 根据之前的回答。 exit with status 11 是发生了coredump。 发生coredump原因一般是两个 1、使用了不稳定的扩展,例如在php7下使用libevent扩展(目前libevent扩展还没有稳定的php7版本。php7下请使用event扩展) 2、php的bug,例如使用了最...
使用GatewayWorker,设备使用TCP协议进行连接,连接同一端口。 设备本身一共有 3 种设备协议可供选择 其中两种设备协议发送的数据有不同的开始和结束标记,并且开始结束标记是ASCII控制符。 另外一种设备协议发送的数据没有开始结束标记。 现在设备传输数据出现了粘包现象,想到了定制协议。设备发出的数据没办法进行修改。 最开始想到的是text协议。但是设备发出的数据没办法修改(比如加个 "\n...
使用的是 GatewayWorker 使用场景:用户打开页面,页面就开始向设备发送消息,获取数据。 可以以房间号来做定时器定时向房间里的人推送消息吗?因为每个房间推送的内容不一样。 房间里的人共享这个定时器吗?这样房间就只需要创建一个定时器了,当房间没人的时候,就可以关闭这个定时器。 感谢各位大大回复!...
操作步骤: 打开页面,使用webscoket连接,获取clientid,将clientid使用ajax发送到后台,使用gatewayClient中的setSession设置session信息。 刷新页面时,先执行了onClose,然后执行onConnect,重复 步骤1。 求助: 在onClose里没获取到步骤1里设置的session值,clientid没有错误。 进入页面即步骤1,执行了 php start.php...