ユーザーが「オンライン」であることを何らかの形で確認する方法があります。それを達成するには、「オンライン」とは、通常、ユーザーがその瞬間にオンラインになっていることを指すことを理解する必要があります。これをチェックするのは簡単ではありません (あるいは不可能ですらあります) が、ユーザーが特定x
の時間内に何らかのアクションを行ったかどうかをチェックすることは非常に簡単であり、ほとんどのプログラマーが選択しています。
とても簡単です:
- というデータベースに、ログインしているユーザーごとにフィールドを作成します
last_activity
。
- ユーザーがページにアクセスするたび
last_activity
に、現在のtime()
スタンプに設定します。
$x
ユーザーがアイドル状態 (新しいページを閲覧していない状態) でオフラインと見なされるまでの秒数を定義します。(通常は 15 分または 30 分または 1 時間です)。
- 次のような簡単なクエリを実行します
"SELECT * FROM users WHERE last_activity >= ". (time() - $x)
$x
これで、数秒以内にページを読み込んだユーザーのリストができました。
他のものとは異なり、PHP や Web ブラウザーでは、ユーザーがブラウザーでページの 1 つを閉じたことを確実に検出する方法がないため、ユーザーがいつブラウザー ウィンドウを閉じたか、または Web サイトを終了したかを知ることは技術的に不可能です。
ところで、私は嘘をつきました。方法はありますが、それは非常に高価です。サーバーをクラッシュさせる可能性があるため、よく考えてください。
last_activity
ユーザー テーブルにフィールドを作成します (以下を参照)。
- 毎秒必要なJavascript コードを (AJAX を使用して) 作成します
y
(update.php
ほんの一例)。
- あなたのウェブサイトのすべてのページにその JavaScript を入れてください (
y
できる限り大きい数を考えてください (< 30 秒は悪いかもしれません))。
- 現在のスタンプ
update.php
で更新する場所を作成します。last_activity
time()
$x = $y + 1
オンラインの人を見つけたい場合は、使用する前と同じクエリを実行します。
最新のソリューションを使用すると、ユーザーがページにアクセスしていないときはいつでも、AJAX 呼び出しも実行していないことを確認y
でき、数秒以内にオンラインと見なされなくなります。これは最初のソリューションと非常によく似たソリューションですがy
、前の よりも小さく設定できますx
。このようにして、ユーザーのブラウザー ウィンドウの現在の状態に関する情報が増えますが、以前よりもはるかに多くのデータベース負荷が発生します。