This commit is contained in:
aozhiwei 2021-12-20 11:09:53 +08:00
parent 6a95fa1365
commit 133cfec9dd
2 changed files with 4 additions and 55 deletions

View File

@ -91,21 +91,6 @@ def _refreshData(row, data_list, data_info):
if (len(data_list) > 50):
del data_list[50:]
#更新排行榜
def _updateKillRank(r, channel, kill_list):
kill_list.sort(key=take_kills, reverse=True)
kill_rank = []
for kill_index in range(min(50, len(kill_list))):
kill_rank.append(kill_list[kill_index])
r.set("game2005api:kill_rank_" + channel, json.dumps(kill_rank))
def _updateWinRank(r, channel, win_list):
win_list.sort(key=take_game_times, reverse=True)
win_rank = []
for win_index in range(min(50, len(win_list))):
win_rank.append(win_list[win_index])
r.set("game2005api:win_rank_" + channel, json.dumps(win_rank))
def _updateScoreRank(r, channel, integral_list):
integral_list.sort(key=take_integral_times, reverse=True)
integral_rank = []
@ -116,8 +101,6 @@ def _updateScoreRank(r, channel, integral_list):
def fullUpdateRank():
f7.udplog.info('fullUpdateRank begin')
mysql_conf = json.loads(open(CONFIG_DIR + '/rankserver.mysql.cluster.json', 'r').read())
kill_hash = {}
win_hash = {}
integral_hash = {}
for conf in mysql_conf:
conn = pymysql.connect(host = conf['host'],
@ -132,22 +115,11 @@ def fullUpdateRank():
temp_idx = 0
while 1:
cursor.execute('SELECT accountid, user_name, avatar_url, kills, alive_time,'
' harm, win_times, game_times, idx, integral, season_time FROM user WHERE idx > %s LIMIT 0, 1000' % (last_idx))
' harm, win_times, game_times, idx, integral, season_time '
'FROM user WHERE idx > %s LIMIT 0, 1000' % (last_idx))
has_data = False
for row in cursor:
has_data = True
#更新击杀榜
channel = f7.getChannelByAccountId(row[0])
if checkchannel(channel):
if channel not in kill_hash:
kill_hash[channel] = []
_refreshData(row, kill_hash[channel], take_kills)
#更新胜场榜
channel = f7.getChannelByAccountId(row[0])
if checkchannel(channel):
if channel not in win_hash:
win_hash[channel] = []
_refreshData(row, win_hash[channel], take_game_times)
#更新积分榜
channel = f7.getChannelByAccountId(row[0])
if checkchannel(channel):
@ -163,10 +135,6 @@ def fullUpdateRank():
conn.close()
r = _getRedis()
for channel in kill_hash:
_updateKillRank(r, channel, kill_hash[channel])
for channel in win_hash:
_updateWinRank(r, channel, win_hash[channel])
for channel in integral_hash:
_updateScoreRank(r, channel, integral_hash[channel])
f7.udplog.info('fullUpdateRank end')
@ -182,8 +150,6 @@ def _fullUpdateRank(rushtime):
def incrementUpdateRank():
mysql_conf = json.loads(open(CONFIG_DIR + '/rankserver.mysql.cluster.json', 'r').read())
r = _getRedis()
kill_hash = {}
win_hash = {}
integral_hash = {}
for conf in mysql_conf:
conn = pymysql.connect(host = conf['host'],
@ -205,18 +171,6 @@ def incrementUpdateRank():
has_data = True
channel = f7.getChannelByAccountId(row[0])
if checkchannel(channel):
#更新击杀榜
if channel not in kill_hash:
kill_list = r.get('game2005api:kill_rank_' + channel)
kill_hash[channel] = [] if not kill_list else json.loads(kill_list)
_delRepeatData(row, kill_hash[channel])
_refreshData(row, kill_hash[channel], take_kills)
#更新胜场榜
if channel not in win_hash:
win_list = r.get('game2005api:win_rank_' + channel)
win_hash[channel] = [] if not win_list else json.loads(win_list)
_delRepeatData(row, win_hash[channel])
_refreshData(row, win_hash[channel], take_game_times)
#更新积分榜
if channel not in integral_hash:
integral_list = r.get('game2005api:integral_rank_' + channel)
@ -231,15 +185,10 @@ def incrementUpdateRank():
cursor.close()
conn.close()
for channel in kill_hash:
_updateKillRank(r, channel, kill_hash[channel])
for channel in win_hash:
_updateWinRank(r, channel, win_hash[channel])
for channel in integral_hash:
_updateScoreRank(r, channel, integral_hash[channel])
f7.udplog.info('incrementUpdateRank end')
#每5分钟读取mysql里发生改变过的数据更新排行榜
def _incrementUpdateRank(rushtime):
def done_callback():
f7.timer.callLater(rushtime,

View File

@ -149,8 +149,8 @@ class UserController extends BaseAuthedController {
'last_season_id' => $currSeasonMeta ? $currSeasonMeta['id'] : 0,
'head_list' => json_encode($headList),
'head_frame_list' => json_encode($headFrameList),
'score_createtime' => $this->_getNowTime(),
'best_rank_createtime' => $this->_getNowTime(),
'score_modifytime' => $this->_getNowTime(),
'best_rank_modifytime' => $this->_getNowTime(),
'createtime' => $this->_getNowTime(),
'modifytime' => $this->_getNowTime(),
)