多个定时器 不同的客户端长时间停留 数据混乱

定义了两个定时器,根据来源的不同,发送不同的数据,现在如果单独访问没有问题,我在两个浏览器,同时访问两个数据,一个不动,另一个刷新几次,这两个端接收都是同一个数据了,


我想实现的是客户端只有第一次访问的时候,会发送数据过来,发送后,就一直是服务端定时推送数据给这个客户端
6.png

 
已邀请:

six

赞同来自:

你的逻辑有bug吧,$this->cmd和$this->params是所有定时器共享的,在onMessage里更改了$this->cmd和$this->params,所有定时器都影响了

six

赞同来自:

针对连接的对象是$connection啊,$connection->cmd = 'xxxx'; $connection->params = 'xxxx'; 。
 
还有,在onClose的时候要把对应连接的定时器也删除,不然你的定时器数量是无限增长,假设有1万个定时器每秒跑一次,你的业务基本就挂了。

six

赞同来自:

 一个定时器也可以啊。你可以设置一个定时器,然后
foreach($worker->connections as $connection){
    switch ($connection->cmd) {
        $connection->sned(...);
    }
}
遍历所有连接 判断$connection->cmd = 'xxxx'; $connection->params = 'xxxx'; 并生成数据发送

雪昙花 - 小白

赞同来自:

2.png

之前就是这样做的,就是这样会有问题的

要回复问题请先登录注册