2011-07-09 14 views
1

は私が持っている問題があります。ユーザーがWebサイトにログインすると、オフラインであることを示す値が設定されます。ユーザーがWebサイトからログアウトすると、ユーザーがオフラインであることを示す値が設定されます。ユーザーがウェブサイトを終了した場合の設定値

しかし、ユーザーがログアウトせずにウェブサイトを閉じるだけであれば、まだオンラインであることを示しています。

ウェブサイトを閉鎖すると、どのようにオフラインにすることができますか?

私のウェブサイトは、php、html、css、mysqlを使用しています。

答えて

5

最も一般的なアプローチは、単に「オンライン」フラグではなく、ユーザーの最後のアクティビティでタイムスタンプを保存することです。すべてのアクティビティでタイムスタンプを更新し、オフラインユーザーを計算するには、5分間以上実行していないユーザーを確認します。あなたにも、ユーザーの現在のセッションにタイムスタンプを保存し、それだけの有効期限が近づいているとき、あなたの活動のタイムスタンプがデータベースに更新することがあり、パフォーマンス上の理由から

2

たとえば、Ajaxによってユーザーが「応答」していることを確認できます。または、非アクティブなタイムアウトによってステータスをオフラインに設定できます。

0

おそらく、ブラウザに閉じるときにjavascriptイベントが発生する可能性があります。このイベントでは、サーバーにajaxによる通知を送信できます。

私が推測するより良いアプローチは、クライアントのJavaScriptが定期的にサーバーにユーザーがまだ存在していることを通知することです。通知が届かない場合は、オフラインにする必要があります。

4

ブラウザ(またはブラウザタブ)を閉じると、サーバーにイベントが送信されないため、基本的にこれに反応することはできません。このような場合、私はハートビートメカニズムを好むでしょう。

もう1つの方法は、20分ほどの時間がかかってからイベントが発生しなかった場合にクライアントがログアウトしたと仮定することです。

ここでも同様の問題が説明されています。Check if user is offline

関連する問題