ClientID在几台设备同时连接时会出现重复的情况

xiewen_kevin

Hi walkor,

用Workerman作为TCP服务器时, 设备同时连接时,

    self::$statistics++;
    $this->id = $this->_id = self::$_idRecorder++;    这行代码在给_id赋值时会出现重复的情况,

请教下walkor,有没有不管几千上万台设备同时连接服务器时clientid不重复的算法,感激不尽~

4167 3 0
3个回答

walkor

GatewayWorker运行过程中client_id不会重复的,
你代码中发的 $this->id = $this->_id = self::$_idRecorder++; 是进程内部的socket 连接编号,并不是client_id。

  • 暂无评论
xiewen_kevin

是的,不过我现在不是用的GatewayWorker,而是直接用的Workerman, 所以我想给$this->id 和 $this->_id 自定义赋值且不会出现重复,不过我现在随机字符串20位也是会出现重复的值,且重复的机率比较大(注:只有三台设备同时重连), 问下walkor,能否有办法解决呢,还是否我随机数算法写的不合理

  • 暂无评论
walkor

http://doc.workerman.net/315338
手册有写,你可以加上worker->id前缀

年代过于久远,无法发表回答
🔝