ログインプログラムを作っております。


そこのプログラムに、ログインしている人数を表示させたいと思っておりますが、一般的にはそういったデータはどの様に管理してますでしょうか?

出来れば、DBを使わない方向で進めたいのですが。。。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/10 17:47:11
  • 終了:2007/01/13 21:04:29

回答(2件)

id:bonlife No.1

回答回数421ベストアンサー獲得回数752007/01/10 19:22:10

ポイント35pt

「一般的に」となるか分かりませんが、オンライン人数を表示するプログラムとして有名なXOOPSでは、オンラインユーザを管理するDBを持ち、ログイン時にそのDBにユーザ情報(ID、ユーザ名、ログイン時間など)をINSERTし、適当なタイミングでDELETEしてます。

DELETEされていない状態で再度ログインされた場合、UPDATEして情報を更新しています。

そのあたりの流れは、XOOPSのソースコードをダウンロードし、

  • html/kernel/online.php
  • html/modules/system/blocks/system_blocks.php (b_system_online_show()という関数)

あたりを確認すれば分かると思います。

DBを使わずに同様の情報をテキストファイル(CSVなど)で管理することも不可能ではないと思いますが、パフォーマンスを考慮するとDBを使った方が良いと思います。

[参考URL]

少しでも参考になれば幸いです。

(他の方からベターな提案があると良いですね。)

id:bathrobe No.2

bathrobe回答回数77ベストアンサー獲得回数12007/01/13 09:16:31

ポイント35pt

内部の処理が「一般的」かどうかは、分からないものでは?と思います。

DBを使わないのであれば、こんな手法が考えられます。

・ログインしている人を管理するための、データディレクトリを作る

・ログインしたら、データディレクトリにファイル名がユーザーID名の空ファイルを作る

・ログイン後の操作をするたびに、空ファイルを上書きする(ファイルの更新時間のアップデート)。

・ログアウトしたら、空ファイルを消す。

・ログインしている人数は、空ファイルの数とする。

 ただし、空ファイルの数を数えるときに、ファイルの更新時間が古いもの(たとえば10分以上)はそのファイルを削除し、人数にはカウントしない(ログアウトしたとみなす)。

ただしこの方法それほど人数が多くない(100人程度)場合向けの簡易的な方法。

数千人になると破綻しそうです。

URLはダミーです。

http://q.hatena.ne.jp/answer

id:makocan

お二人方ありがとうございます。

参考になりました。

やはり、DBを使う方法で行こうと思います。

2007/01/13 21:04:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません