PHPとAJAXを使って簡単なWebチャットアプリを作成しようとしています。PHPでログインしたユーザーを追跡する
私は、利用可能なオンラインユーザーの一覧を表示できるように、開いているすべてのセッションに注意する必要があります。チャットセッションを終了し、メッセージを削除するための条件として、「送信側と受信側の両方がオフラインです」を使用するため、ログアウトも認識する必要があります。
データベースのログインユーザーを追跡しています:ログイン時にエントリを追加してログアウト時に削除すると問題はありませんが、ユーザーがログに記録できる2つの方法がありますout:
- サーバー側のセッションは、非アクティブの後に有効期限が切れます。
- ブラウザ側でクライアント側のCookieが破棄されます。ある種のoncloseトリガAJAX(ブラウザがクラッシュした場合など)を使用するのは悪い考えです。
最も簡単な解決策は、最後のアクティビティのタイムスタンプを保持しているようです。私は、このかかわらず、いくつかの問題を参照してください:それは正確ではない(と私は3分の間違った有効期限を取得する場合、それはいくつかの男が可能性が3分ですので
- 私の知る限り、サーバー側の有効期限は、チャンスに基づいています
- 私は常に、現在の時刻と比較してログインしているすべてのユーザーの最後の活動時間を確認するためにデータベースに問い合わせる必要があります。私はいつどこでこれを効率的にやるのか分かりません。オンラインユーザーのリストが必要なたびにこれを行うのはばかげているようです。
助けてください。私は自分自身をコーディングしています。なぜなら、自分の既存のユーザーデータベースと統合できるWebチャットフレームワークを認識しておらず、私が間違っていると私を修正してしまうからです。
私は、実際にはタイムスタンプを試して推測する必要はないことに気付きました。とにかくすべてのユーザーが常に新しいメッセージを確認するためにクエリを実行するので、クエリが実行されるたびにタイムスタンプを更新し、すべてのタイムスタンプ> 20秒間のユーザーを非アクティブにすることもできます。ですから、古いタイムスタンプを持つエントリをデータベースが自動的に削除する最良の方法を理解する必要があります。 – Jonathan
@bfavaretto注目してくれてありがとう!プログラマーは頼むべき正しい場所のように思えます。 – Jonathan