LAMP ベースのビジネス アプリケーションがあります。より正確には SugarCRM です。現在120人以上のアクティブユーザーがいます。毎日、各ユーザーは、いわゆる「個人評価」を取得するために複雑な計算で使用されるいくつかのレコードを生成します。
1つの「個人評価」値を算出するのに約6秒かかります。以前は大きな問題はありませんでした。各ユーザーが提供されたリンクにアクセスして「個人の評価」の計算を開始し、6 ~ 7 秒待って、値が表示されるようにしました。
しかし、ここで「総合評価」の計算を実装する必要があります。つまり、「個人の評価」に加えて、計算してユーザーに表示する必要があります。
アプリケーションのすべてのユーザーの中での最低個人評価
アプリケーションのすべてのユーザーの中で最大の個人評価
すべての個々の評価の範囲における現在のユーザーの位置。
現在のユーザーの個人評価が 220 ポイントで、評価の最小値が 80、最大値が 235 で、すべてのユーザーの中で 23 位にあるとします。
(imho) 解決すべき主な問題は何ですか?
1 つの計算が 6 秒間続く場合、全体の計算には 10 分以上かかります。この期間、アプリケーションをほとんどアクセスできない状態にするのは良くないと思います。近い将来、ユーザー数が 2 ~ 3 倍に増えるとしたらどうでしょうか。
これらの計算は夜間の仕事として実行できますが、すべてのユーザーは異なるタイムゾーンにいます。ロシアでは極端なタイムゾーン間の差は 9 時間です。つまり、ロシア西部の人々は「今日」でも働いています。東部の人々が「明日」に仕事をするために目覚めている間。では、この場合、夜間の仕事に最適な時間帯はいつでしょうか?
そのような評価システムを構築するためのベストプラクティス|アプローチ|アルゴリズムはありますか?