计算实时游戏排名的最有效方法

The most efficient way to calculate rankings in real time games

我想知道最快最有效的实时计算积分和排名的方法。

我正在做一款足球博彩游戏(用户尝试预测之前比赛结果的游戏)。在我国称为"Quiniela"。

玩家在比赛开始前放置 "predictions"。我的问题是:从游戏开始的那一刻起,这是计算玩家排名 "real time" 作为他们对实际结果的预测的最有效方法(不仅是代码级​​别,还有数据库和服务器)游戏。

例如:

如果 Team1 vs Team2 比赛, 用户U1预测比赛将以0-0结束, U2 预测比赛将以 1-0 结束, U3预测比赛将以1-1结束。

开始比赛时,U1的排名应该是第一,因为如果比赛就这样结束,他的预测是正确的,至少是最准确的。

然后比分变为1-0,用户U1将排名最后(因为他的预测不再可能),U2将是第一,U3将是第二。

如果比分变为1-1,U2先,U3后(因为他猜到了部分结果),U3最后

我考虑过在更改分数、更改排名 "temporarily" 和我会把它保存在缓存中。

游戏结束后,我将最新的排名保存在数据库中。

有没有更优化的方法来解决这个问题? 之前提出过,已经解决了? 我正在使用 MySQL 作为数据库,PHP (Cake Php) 作为服务器,还有一群手机偶尔会要求排名。

对不起我蹩脚的英语=(

我会使用以下方法:

保持排名 table 在每个比赛日之后存储当前排名。复制 table 以获得临时排名 table。每当比赛日开始时,将球员的当前排名复制到临时排名table中(可以通过在原始排名table中引入temporary_score列来避免二次关系和复制) .

每当游戏分数发生变化时,重新计算所有分数。当比赛结束后,您可以将临时排名复制回排名table。