0

私のウェブサイトのユーザーのオンラインステータスを表示したいと思います。最後のアクティビティの正確な分を表示する必要はありません。ただし、ユーザーが過去に5〜10分などのアクティビティを行ったことがあるかどうかを確認してください。

このシステムの作成を考えているときに私が抱えている問題は次のとおりです。

  • onlineUsersを使用してSQLテーブルを作成し、特定のページごと、またはxページごとにテーブルを更新した場合(SQLの更新が多すぎるのを防ぐため)、前回のアクティビティ以降の分数は確かにかなり正確になります。ただし、データベースとの接続が多すぎて、最終的にWebサイトの速度が低下します。

  • いくつかの賢い方程式を作成して、ユーザーにonlineUsers行を更新させるだけで、この問題をなんとか最小限に抑えることができます。たとえば、100ページのクリックごとに、phpから多くのリソースを必要としませんが、それでもそれを行うには不機嫌な方法です。

  • また、10分ごとにオンラインのユーザーをチェックし、すべてのテーブルを更新する、ある種のクロップリストシステムを統合することもできました。しかし、それがどのように機能するのか、実際にテーブルの行をIDで更新せずに、過去10分間にどのユーザーが正確にアクティブであったかを確認する方法がわかりません。

しかたがない。そのようなシステムはこれまでに何百回も作成されたと確信しています。したがって、誰かがそのようなシステムを作成するための最良の方法を教えてくれるはずです。データベースからのリソースはできるだけ少なくて済みます。

  • 編集*私はユーザーのログインを設定するためにクッキーを使用しています。

助けてくれてありがとう :)

4

1 に答える 1

1

last_activity通常、使用される方法は、ページの読み込み時に更新されると呼ばれるユーザーテーブルに列を追加することです。これは、おそらく作成できる最も単純で信頼性の高い方法です。

処理を高速化するために、アクティビティ列を最後に更新したときに保持するセッション変数を作成できます。ユーザーごとにそれを読んで、最後の更新が遠すぎるかどうかを確認し(たとえば、3分)、その時点で更新することができます。これにより、ユーザーが1分間に100回ページを更新した場合、1分間に100回のデータベース呼び出しが回避されます。

なんとかしてこの問題を最小限に抑えるには、スマートな方程式を作成して、ユーザーにonlineUsers行を更新させるだけで、たとえば100ページのクリックごとに更新することができます。

ページクリックとは、ページリクエストを意味していると思います。そして、それは悪い考えではありません。私見:ユーザーが8分ごとに3回ページをロードする場合、リクエストごとに更新する価値があります。

また、10分ごとにオンラインのユーザーをチェックし、すべてのテーブルを更新する、ある種のクロップリストシステムを統合することもできました。しかし、それがどのように機能するのか、実際にテーブルの行をIDで更新せずに、過去10分間にどのユーザーが正確にアクティブであったかを確認する方法がわかりません。

それはただのやり過ぎです。

于 2013-02-19T00:26:32.430 に答える