我有基于 LAMP 的业务应用程序。SugarCRM 更准确。目前有 120 多个活跃用户。每个用户每天都会生成一些用于复杂计算的记录,以获得所谓的“个人评分”。
计算一个“个人评分”值大约需要 6 秒。而且之前没有大问题:每个用户点击提供的链接开始“个人评分”计算,等待6-7秒,得到显示的值。
但现在我需要实现“总体评分”计算。这意味着除了“个人评分”之外,我还必须计算并向用户显示:
应用程序所有用户的最低个人评分
应用程序所有用户的最大个人评分
当前用户在所有个人评级范围内的位置。
比如说,当前用户的个人评分等于 220 分,评分最小值为 80,最大值为 235,在所有用户中排名第 23 位。
要解决的主要问题是什么(恕我直言)?
如果一个计算持续 6 秒,那么整个计算将需要 10 分钟以上。我认为在此期间使应用程序几乎无法访问是没有好处的。如果用户数量在最近的将来会增加 2-3 倍呢?
这些计算可以作为夜间工作完成,但所有用户都在不同的时区。在俄罗斯,极端时区之间的差异是 9 小时。因此,俄罗斯西部的人们仍在“今天”工作。而东部地区的人们正在“明天”醒来工作。那么在这种情况下,夜间工作的最佳时间是什么时候?
是否有任何最佳实践|方法|算法来建立这样的评级系统?