0

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

我正在做一个投注足球比赛(用户试图预测比赛结果的比赛)。在我国被称为“Quiniela”。

球员们在比赛开始前进行“预测”。我的问题是:从游戏开始的那一刻起,这是最有效的方式(不仅仅是代码级​​别,而是数据库和服务器)“实时”计算玩家排名作为他们对游戏实际结果的预测.

例如:

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

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

然后比分切换到 1-0,用户 U1 将是排名的最后一个(因为他的预测已经不可能了),U2 将是第一名,U3 将是第二名。

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

当您更改分数时,我考虑创建一个具有一个级别的可能性树(0-0 第一个节点,1-0 和 0-1 作为子节点),“临时”更改排名,我会将其保存在缓存中。

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

有没有更优化的方法来解决这个问题?以前有人提出过,已经解决了吗?我将 MySQL 用于数据库,将 PHP (Cake Php) 用于服务器,还有一群不时要求排名的手机。

对不起我蹩脚的英语=(

4

1 回答 1

1

我会使用以下方法:

保留一个排名表,在其中存储每个比赛日后的当前排名。为临时排名表复制该表。每当比赛日开始时,将球员的当前排名复制到临时排名表中(您可以通过在原始排名表中引入一个temporary_score列来避免二次关系和复制)。

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

于 2015-01-26T02:11:03.943 回答