ユーザーが Web ページにアクセスすると、ユーザーのセッション変数が作成され、アクティブなセッションの数をカウントすることは可能でしょうか?
3 に答える
ユーザーが Web ページにアクセスすると、ユーザーのセッション変数が作成され、アクティブなセッションの数をカウントすることは可能でしょうか?
あなたが何かを保管するものはすべて数えることができます。ただし、デフォルトでは、セッションの値はユーザーごとであり、PHP はすべてのセッションをまとめて追跡するわけではありません。
したがって、そのコンテキストを作成するのはあなた次第です。たとえば、独自のセッション ハンドラを作成できます。
PHP 5.4 では、標準のセッション ハンドラーを拡張し、必要な機能を追加するだけで済むようになったため、これがはるかに簡単になりました。マニュアル ページを参照してください: SessionHandler クラス
では、これはどのように機能するのでしょうか? セッションが存在するたびに、アクティブなセッションがあることを共有されているデータストアに書き込みます。ガベージ コレクションなどによってセッションが破棄された場合、または時間と比較して最後のアクティビティから十分な時間が経過したためにセッションが破棄された場合は、共有データストアを介してそれをカウントできます。
セッションは、session.save_path (ini ファイル内) フォルダー内の一時ファイルに保存されます。各ファイルは「sess_」で始まります。これらのファイルの数を数えれば、アクティブなセッションの数を知ることができると思います。
おそらくこれでセッション数を取得できます:
$sessionCount = count(glob(session_save_path()."/*"));
ただし、セッション ガベージ コレクションが正しく構成されていることを確認して、そこでデッド セッション ファイルが取得されないようにする必要があります。