diff --git a/tools/rankserver/app.py b/tools/rankserver/app.py index d5ee69a..76550d7 100644 --- a/tools/rankserver/app.py +++ b/tools/rankserver/app.py @@ -62,31 +62,23 @@ def getDaySeconds(time_val, incdays): return dayseconds #刷新数据 -def refreshData(row, kill_list, alive_list, harm_list, rate_list, win_list): +def refreshData(row, data_list, data_info): + key_info = data_info + list_info = data_list + i = 0 + for data in data_list: + if (data[0] == row[0]): + del data_list[i] + break + i = i + 1 kill = safeDiv(row[3], row[7]) alive_time = safeDiv(row[4], row[7]) harm = safeDiv(row[5], row[7]) win_times = safeDiv(row[6], row[7]) - kill_list.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) - kill_list.sort(key=take_kills, reverse=True) - if (len(kill_list) > 50): - del kill_list[50:] - alive_list.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) - alive_list.sort(key=take_alive_time, reverse=True) - if (len(alive_list) > 50): - del alive_list[50:] - harm_list.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) - harm_list.sort(key=take_harms, reverse=True) - if (len(harm_list) > 50): - del harm_list[50:] - rate_list.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) - rate_list.sort(key=take_win_times, reverse=True) - if (len(rate_list) > 50): - del rate_list[50:] - win_list.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) - win_list.sort(key=take_game_times, reverse=True) - if (len(win_list) > 50): - del win_list[50:] + list_info.append((row[0], row[1].decode('utf-8'), row[2], kill, alive_time, harm, win_times, row[6])) + list_info.sort(key=key_info, reverse=True) + if (len(list_info) > 50): + del list_info[50:] #更新排行榜 def updateRank(r, kill_list, alive_list, harm_list, rate_list, win_list): @@ -145,7 +137,15 @@ def dayReadMysqlData(rushtime): has_data = False for row in cursor: - refreshData(row, kill_list, alive_list, harm_list, rate_list, win_list) + refreshData(row, kill_list, take_kills) + #更新生存榜 + refreshData(row, alive_list, take_alive_time) + #更新伤害榜 + refreshData(row, harm_list, take_harms) + #更新胜率榜 + refreshData(row, rate_list, take_win_times) + #更新胜场榜 + refreshData(row, win_list, take_game_times) temp_idx = int(row[8]) if (temp_idx > last_idx) : last_idx = int(row[8]) @@ -204,22 +204,31 @@ def readMysqlData(rushtime): cursor = conn.cursor() last_idx = 0 temp_idx = 0 - flag = 0 + kill_flag = 0 + alive_flag = 0 + harm_flag = 0 + rate_flag = 0 + win_flag = 0 + data = '' while 1: cursor.execute('SELECT accountid, user_name, avatar_url, kills, alive_time,' ' harm, win_times, game_times, idx, modify_time FROM user ' ' WHERE modify_time > %s AND idx > %s LIMIT 0, 1000' % (time.time() - 300, last_idx)) has_data = False for row in cursor: - for rowKill in kill_list: - if (rowKill[0] == row[0]): - flag = 1 - break - if (flag != 1): - refreshData(row, kill_list, alive_list, harm_list, rate_list, win_list) - temp_idx = int(row[8]) - if (temp_idx > last_idx) : - last_idx = int(row[8]) + #更新击杀榜 + refreshData(row, kill_list, take_kills) + #更新生存榜 + refreshData(row, alive_list, take_alive_time) + #更新伤害榜 + refreshData(row, harm_list, take_harms) + #更新胜率榜 + refreshData(row, rate_list, take_win_times) + #更新胜场榜 + refreshData(row, win_list, take_game_times) + temp_idx = int(row[8]) + if (temp_idx > last_idx) : + last_idx = int(row[8]) if not has_data: break