1

私はPHPでチャットアプリケーションに取り組んでいます。ここでは、1 つのログインsession_idをデータベースに保存しています。ユーザーがログアウトするとき、これsession_idをnullに設定しています。session_idこのようにして、他のユーザーがログインしているユーザーを取得しています。スクリプトは、チャットボックスが開いている場合、このメッセージとそれぞれのメッセージを 5 秒ごとにチェックしています。

ユーザーがブラウザ自体を閉じたと仮定すると、チャットボックスのアクティブなユーザーリストから彼を削除する方法は?

ブラウザを閉じると、セッションが期限切れになります。session_id特定の Web サイトのサーバー上で現在アクティブになっているすべてのものを追跡できるものはありますか?

または、PHP でチャット アプリケーションのすべてのアクティブ ユーザーを追跡する方法はありますか? ここで欠落しているパラメーターを取得できません。

私を助けてください。

4

1 に答える 1

3

ルーカスが言った通り。「last_seen」などのタイムスタンプフィールドを作成し、5秒ごとにAJAXを介して更新します(とにかく今行っていること)。次に、このクエリがアクティブとして返すすべてのユーザーについて考えることができます。

SELECT * FROM user WHERE last_seen > CURRENT_TIMESTAMP - 30;

その他はすべてオフラインです(ブラウザまたはsthを閉じています)。

上記のクエリでは、ユーザーが30秒間表示されていない場合、ユーザーはオフラインであると想定しています。この値はこれより低くてもかまいませんが、last_seen列の更新には常に遅延が発生する可能性があるため、5秒(更新間隔)より大きくする必要があります。

于 2012-11-16T09:02:21.897 に答える