进程、Timer的一些疑问。

由服务端发送消息给客户端的时候会添加一个Timer防止客户端未响应该消息,当客户端回复该消息的时候会删除这个Timer。但是有时候会存在没删除Timer的情况,所以有以下几个疑问。 client_id在onConnect以后就常驻在这个进程里不变了吗? 这个client_id添加的Timer和这个client_id是在同一个进程吗? 频繁的添加和删除Timer是导致删除Timer失败的原因吗?...

啊哒梨 发表与 2017-12-06 2633 浏览 1 回答
可以通过设置系统内的tcp keepalive来缩短极端情况的断线吗?

当服务端不要求客户端必须回应心跳检测时,假如客户端遇到掉电等极端情况,这时服务端向客户端发送的心跳数据在TCP层面就会发送超时,遇到这种超时情况TCP会重试多次(次数及间隔依赖操作系统的配置),多次无果后会断开连接。这种极端情况从连接断开到服务端检测到可能要持续至少10分钟才触发onClose事件回调。 可以通过以下的设置来缩短超时情况下的断线吗? $ vim /etc/sysctl.conf net.ipv...

啊哒梨 发表与 2017-11-24 3454 浏览 1 回答
BusinessWorker内存持续增长,直到溢出exit

有几个疑问,不知道是不是造成内存持续增长的原因 以下是大致的消息处理流程 在 Events.php 里,每秒发送数据的次数在3-8次左右,每次发送的数据量不大。 设备有两种数据处理方式 其中一类处理,频繁的数据转发到组。 另一类处理,频繁的操作redis(出队入队)、更新session数据。 条件成立时 创建1-2个一次性的定时器,写入数据库或者发送邮件 写数据到数据库里 推送数据到组中的随机一个用户 不知道...

啊哒梨 发表与 2017-11-18 4595 浏览 5 回答
GatewayWorker - exit with status 11,应该如何排查呢?

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,例如使用了最...

啊哒梨 发表与 2017-11-16 5714 浏览 1 回答
使用GatewayWorker遇到TCP粘包问题

使用GatewayWorker,设备使用TCP协议进行连接,连接同一端口。 设备本身一共有 3 种设备协议可供选择 其中两种设备协议发送的数据有不同的开始和结束标记,并且开始结束标记是ASCII控制符。 另外一种设备协议发送的数据没有开始结束标记。 现在设备传输数据出现了粘包现象,想到了定制协议。设备发出的数据没办法进行修改。 最开始想到的是text协议。但是设备发出的数据没办法修改(比如加个 "\n...

啊哒梨 发表与 2017-11-10 3968 浏览 1 回答
以聊天室为例,定时器可以以房间号来做并且房间里的人共享这个定时器吗?

使用的是 GatewayWorker 使用场景:用户打开页面,页面就开始向设备发送消息,获取数据。 可以以房间号来做定时器定时向房间里的人推送消息吗?因为每个房间推送的内容不一样。 房间里的人共享这个定时器吗?这样房间就只需要创建一个定时器了,当房间没人的时候,就可以关闭这个定时器。 感谢各位大大回复!...

啊哒梨 发表与 2017-07-18 3071 浏览 1 回答
GatewayClient中使用setSession后,无法在Events.php-onClose里使用$_SESSION获取

操作步骤: 打开页面,使用webscoket连接,获取clientid,将clientid使用ajax发送到后台,使用gatewayClient中的setSession设置session信息。 刷新页面时,先执行了onClose,然后执行onConnect,重复 步骤1。 求助: 在onClose里没获取到步骤1里设置的session值,clientid没有错误。 进入页面即步骤1,执行了 php start.php...

啊哒梨 发表与 2017-06-26 2537 浏览 1 回答

啊哒梨

1835
积分
0
获赞数
0
粉丝数
2017-04-28 加入
×
🔝