下面两个图是我分别重启后截图,默认都是从client_id=1开始递增。
这样是不是一旦项目上线后,就不能关闭重启了,只能通过平滑重启,不然clietn_id与数据库的uid对不上了?或者有没有其他解决办法?
查看源码发现,client_id是通过ip+端口+connection_id的16进制,connection_id是当前连接数,所以workerman重启后,connection_id就从1重新开始计算了。
/**
* 生成connection id
* @return int
*/
protected function generateConnectionId()
{
$max_unsigned_int = 4294967295;
if (self::$_connectionIdRecorder >= $max_unsigned_int) {
self::$_connectionIdRecorder = 0;
}
while(++self::$_connectionIdRecorder <= $max_unsigned_int) {
if(!isset($this->_clientConnections[self::$_connectionIdRecorder])) {
break;
}
}
return self::$_connectionIdRecorder;
}
数据库只存uid啊,为什么要去存储client_id呢?对不对得上好像没啥影响吧 ,比如我把客户的username存为UID 那以后我只需要去得到他的username去拿数据库的东西啊 不需要在乎client_id 新手小白一个 不知道对不对..
谢谢,之前以为client_id是类似uuid或者md5之类的,永远不会重复的,所以过渡依赖了sendToClient,现在懂了