検索
カレンダー
2020年2月
« 4月    
 1
2345678
9101112131415
16171819202122
23242526272829
ブログメニュー
Amazon検索
キーワード:

アクセス中の人数をカウントする

2006年11月14日

現在サイトを見ている人の人数を数えたいという要求がありました。

HTTPは基本的に状態を持たないステートレスなものなので、厳密に言えばアクセス中の人数をカウントすることは不可能です。そこで(かなり曖昧ですが)、セッションが有効であればアクセス中とすることにします。

PHPにおけるセッションはデフォルトではファイルに保存されています(session.save_handlerで変更可能です)。1セッション につき1ファイルになり、無効なセッションは削除されていきます。そこでセッションファイルが保存されているディレクトリにあるファイルの数をアクセス中 の人数とすることとしました。ただし、同一サーバ上の他のサイトでもPHPを動かしていてセッションを使っている場合、そのままではセッションファイルが 保存されるディレクトリも共通になります。そこでセッションを開始する前に、対象のサイト独自でセッションファイルを保存するディレクトリを指定します。 スクリプト内で指定するには、以下のようにsession_save_path関数を使用します。これはsession_start関数の前に呼び出す必 要があります。

(例)
session_save_path("session_dir");
session_start();

セッションファイルをカウントするコードは以下のようになります。

(例)
function getActiveCount() {
$path = session_save_path();
if (empty($path)) {
return 0;
}

$files = glob("$path/sess_*");
if ($files === false) {
return 0;
}
return count($files);
}

できるだけ厳密に人数を数えたい場合は、セッションファイルの削除タイミングを調節する必要があります。これは、設定ファイルの以下の項目に該当します。

session.gc_probability
session.gc_divisor
session.gc_maxlifetime
session.cache_expire

参考:
PHPマニュアル CXXXVII. セッション処理関数(session)

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

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

TrackBack URL : http://www.meibinlab.jp/nishijima/archives/59/trackback

コメントする