4

PHP を使用して「who's online」機能を実装するにはどうすればよいでしょうか? もちろん、タイムスタンプを使用する必要があり、phpBB のセッション テーブルを確認した後、最新のアクセスをデータベースに保存する必要がある場合もあります。

これは効率的な方法ですか、それともこのアイデアを実装するためのより良い方法はありますか?

編集: 当時私はまだスタック オーバーフローに慣れていなかったので、誤ってこのコミュニティ wiki を作成しました。

4

5 に答える 5

7

データベースを使用して、ログインしているすべてのユーザーを追跡することが、これを行う唯一の方法です。

私がすることは、ユーザー情報とタイムスタンプを含む行をテーブルに挿入するか、誰かがログインしたときに挿入し、そのユーザーとのアクティビティがあるたびにタイムスタンプを更新することです。また、過去 5 分間にアクティビティを行ったすべてのユーザーが現在オンラインであると想定します。

于 2009-02-02T07:25:04.673 に答える
4

セッションを実装する方法 (および実装する場合) によっては、同じストレージ メディアを使用してアクティブ ユーザーの数を取得できます。たとえば、ファイルベースのセッション モデルを使用する場合は、セッション ファイルを含むディレクトリをスキャンして、セッション ファイルの数を返すだけです。データベースを使用してセッション データを格納している場合は、セッション テーブルの行数を返します。もちろん、これはセッションのタイムアウト値に満足していることを前提としています (つまり、セッションのタイムアウトが 30 分の場合、過去 30 分間のアクティブなユーザーのリストを取得します)。

于 2009-02-02T07:34:10.040 に答える
0

私はそれをこのようにしようと考えていました:

ユーザーがログインすると、ユーザーIDとタイムスタンプがテーブルに挿入されます。次に、5分ごとに、ajaxを介してphpスクリプトを呼び出して、ユーザーがログインしているかどうかを確認し、ログインしている場合は、テーブルのタイムスタンプを更新します。

ユーザーがログインしていない場合は、レコードを削除するだけです。

于 2011-09-10T08:02:48.153 に答える
0

これを実装するには多くの方法があります。

これは、ポーリングするだけで実装できます。

一定間隔でクライアントをチェックし、返信されたクライアントの数をカウントします。

その値は、オンライン ユーザーの数として使用できます。

x秒またはx分ごとに特定のオンラインの人々をチェックする代わりに、プッシュテクノロジーを使用する方が良い方法だと思います.

イベントによって人々がいつ出入りするかをサーバーに知らせるだけです。

そのため、サーバーは、クライアントからイベントが発生したときに、オンライン ユーザー カウント変数を増減するだけです。

Socket.IOAPEを参照することをお勧めします。

また、 XMPPJabberなど、他にも考慮すべきことがたくさんあります。

于 2011-10-07T02:42:42.743 に答える
0

phpで簡単に作れると思います

create table user は、 username 、 password 、および status(1,0) で構成されます

  1. ログインシステムでユーザー名とパスワードを分析する
  2. 次に、ユーザー名とパスワードが一致する場合、クエリを実行してテーブル user から選択し、それを取得します
  3. 次に、ステータスを取得します
  4. ユーザーを更新し、ステータスを 1 に設定します。これはオンラインを意味します
  5. ログアウトをクリックし、セッションのユーザー名とパスワードを分析し、tblユーザーからクエリを選択してステータスを取得し、ステータスを0に設定すると、オフラインを意味します
于 2016-08-05T04:33:27.063 に答える