PHP を使用して「who's online」機能を実装するにはどうすればよいでしょうか? もちろん、タイムスタンプを使用する必要があり、phpBB のセッション テーブルを確認した後、最新のアクセスをデータベースに保存する必要がある場合もあります。
これは効率的な方法ですか、それともこのアイデアを実装するためのより良い方法はありますか?
編集: 当時私はまだスタック オーバーフローに慣れていなかったので、誤ってこのコミュニティ wiki を作成しました。
PHP を使用して「who's online」機能を実装するにはどうすればよいでしょうか? もちろん、タイムスタンプを使用する必要があり、phpBB のセッション テーブルを確認した後、最新のアクセスをデータベースに保存する必要がある場合もあります。
これは効率的な方法ですか、それともこのアイデアを実装するためのより良い方法はありますか?
編集: 当時私はまだスタック オーバーフローに慣れていなかったので、誤ってこのコミュニティ wiki を作成しました。
データベースを使用して、ログインしているすべてのユーザーを追跡することが、これを行う唯一の方法です。
私がすることは、ユーザー情報とタイムスタンプを含む行をテーブルに挿入するか、誰かがログインしたときに挿入し、そのユーザーとのアクティビティがあるたびにタイムスタンプを更新することです。また、過去 5 分間にアクティビティを行ったすべてのユーザーが現在オンラインであると想定します。
セッションを実装する方法 (および実装する場合) によっては、同じストレージ メディアを使用してアクティブ ユーザーの数を取得できます。たとえば、ファイルベースのセッション モデルを使用する場合は、セッション ファイルを含むディレクトリをスキャンして、セッション ファイルの数を返すだけです。データベースを使用してセッション データを格納している場合は、セッション テーブルの行数を返します。もちろん、これはセッションのタイムアウト値に満足していることを前提としています (つまり、セッションのタイムアウトが 30 分の場合、過去 30 分間のアクティブなユーザーのリストを取得します)。
私はそれをこのようにしようと考えていました:
ユーザーがログインすると、ユーザーIDとタイムスタンプがテーブルに挿入されます。次に、5分ごとに、ajaxを介してphpスクリプトを呼び出して、ユーザーがログインしているかどうかを確認し、ログインしている場合は、テーブルのタイムスタンプを更新します。
ユーザーがログインしていない場合は、レコードを削除するだけです。
これを実装するには多くの方法があります。
これは、ポーリングするだけで実装できます。
一定間隔でクライアントをチェックし、返信されたクライアントの数をカウントします。
その値は、オンライン ユーザーの数として使用できます。
x秒またはx分ごとに特定のオンラインの人々をチェックする代わりに、プッシュテクノロジーを使用する方が良い方法だと思います.
イベントによって人々がいつ出入りするかをサーバーに知らせるだけです。
そのため、サーバーは、クライアントからイベントが発生したときに、オンライン ユーザー カウント変数を増減するだけです。
phpで簡単に作れると思います
create table user は、 username 、 password 、および status(1,0) で構成されます