zhangxinlei1996 3 年之前
父節點
當前提交
30c0de167a
共有 1 個文件被更改,包括 18 次插入19 次删除
  1. 18 19
      src/jfw/modules/common/src/qfw/util/jy/jy.go

+ 18 - 19
src/jfw/modules/common/src/qfw/util/jy/jy.go

@@ -361,30 +361,29 @@ type AppLoginPush struct {
 
 //更新存储用户sessionid的队列 【sessionid ttl小于三天的清除】  key:sessionid
 func PutLoginSess(mongodb MongodbSim, apppushRpc, key, userid string, limit, max int) bool {
-	log.Println("进入sessionid队列")
 	value := GetLoginSess(userid)
 	if !IsInLoginSess(key, value) {
 		value = append(value, key)
 	}
 	ttlmap := []TtlMap{}
-	// if len(value) >= int(limit*max/100) {
-	// new_value := []string{}
-	//如果已存的session大于限制 则清除三天后到期的session
-	for _, vv := range value {
-		ttl := redis.GetTTL("session", vv)
-		// if ttl <= 86400*3 && ttl != -1 {
-		// if ttl <= 600 && ttl != -1 {
-		// 	if ok := redis.Del("session", vv); ok {
-		// 		LoginOutPush(mongodb, userid, vv, apppushRpc)
-		// 		log.Println(fmt.Sprintf("%s用户的sessionid 到期时间还有%v 小于三天 清除 %s", userid, ttl, vv))
-		// 	}
-		// 	continue
-		// }
-		// new_value = append(new_value, vv)
-		ttlmap = append(ttlmap, TtlMap{vv, int(ttl)})
+	if len(value) >= int(limit*max/100) {
+		new_value := []string{}
+		//如果已存的session大于限制 则清除三天后到期的session
+		for _, vv := range value {
+			ttl := redis.GetTTL("session", vv)
+			if ttl <= 86400*3 && ttl != -1 {
+				// if ttl <= 600 && ttl != -1 {
+				if ok := redis.Del("session", vv); ok {
+					LoginOutPush(mongodb, userid, vv, apppushRpc)
+					log.Println(fmt.Sprintf("%s用户的sessionid 到期时间还有%v 小于三天 清除 %s", userid, ttl, vv))
+				}
+				continue
+			}
+			new_value = append(new_value, vv)
+			ttlmap = append(ttlmap, TtlMap{vv, int(ttl)})
+		}
+		value = new_value
 	}
-	// value = new_value
-	// }
 	//清除并发最大限制的某个sessionid
 	if len(value) > max {
 		//排序 获取马上过期的session 清除
@@ -397,7 +396,7 @@ func PutLoginSess(mongodb MongodbSim, apppushRpc, key, userid string, limit, max
 			redis.Del("session", delId)
 			value = removeArr(value, delId)
 			LoginOutPush(mongodb, userid, delId, apppushRpc)
-			log.Println(fmt.Sprintf("%s用户的sessionid 超过最大限制 清除 %s", userid, delId))
+			log.Println(fmt.Sprintf("%s用户的sessionid 超过最大限制 清除 %s ,到期时间%v", userid, delId, ttlmap[0].value))
 		}
 	}
 	return redis.Put("other", LoginRedisKey(userid), value, -1)