[PHP-users 23961] Re: ログインしている人数の数え方

nagasako @ soshiki.dip.jp nagasako @ soshiki.dip.jp
2004年 12月 22日 (水) 14:30:59 JST


長迫といいます。

まず第一に、ログアウトをどう扱うかが問題になります。
WEBアプリの場合、ユーザー全員がきちんとログアウトをしてくれないことの方が多いからです。
この場合、タイムアウトの処理を行う必要があります。

タイムアウトの処理を行うためには、ログイン時刻を保存する必要があります。

従って、私は以下のようにしています。

1.ログイン状況管理用のテーブルをmysql上に作成する。
このテーブルに最低限必要な情報は、
ユーザーid、最終アクセス日時の2つです。
2.ログイン時に、このテーブルにユーザー名と最終アクセス日時を追加します。
3.ユーザーが何かを操作するたびに、最終アクセス日時を更新します。
4.ログアウト時に該当ユーザーをテーブルから削除します。

このようにすることで、誰がログインしているか、またその数がいくらかを確認できます。

ただし、はじめに述べたように、これだけではタイムアウトしたユーザーが考慮されていません。従ってタイムアウトしたユーザーを自動的にテーブルから削除する必要があります。

方法はいくつかあります。
一つは、cronを使用して、たとえば1分ごとに、タイムアウトしたユーザーを判別して、テーブルから削除します。
もしくは、上記の2や3のタイミングで、タイムアウトしたユーザーを判別して、テーブルから削除します。

また、タイムアウトしたユーザーに対して、タイムアウトしたことをしらせたい場合は、テーブルから該当ユーザーのレコードを削除してはいけません。削除すると、タイムアウトしたのか、そもそもログインしていないのかが判別できないからです。この場合は、テーブルにログイン状況のフラグを追加してログイン、ログアウト、タイムアウトを判別します。



> いつもお世話になっております。
> 
> php+mysqlで、ホームページを作成しております。
> 会員専用なので、入り口でログインして頂いて
> $_SESSION を使用して、各ページを観覧して頂いています。
> 
> 質問なのですが、ログイン中のメンバーを数えるには
> どのような方法がありますでしょうか?
> 
> もしよろしければアドバイス頂けますと幸いです。
>
**** ------------------------------------------------------
**** 長迫 実/Makoto Nagasako <nagasako @ yuusui.net>
  |   熊本大学 熊粋祭実行委員会 <maturi @ yuusui.net>
凹  凹 URL<http://www.yuusui.net> TEL<096-342-2182>
  凸   ------------------------------------------------------

> よろしくお願いいたします。
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
> __________ NOD32 1.956 (20041221) 情報 __________
> 
> このメールはNOD32によって検査済みです。
> http://canon-sol.jp
> 


PHP-users メーリングリストの案内