[PHP-users 9417] Re: セッションと GC について

Naofumi Kondoh php-users@php.gr.jp
Wed, 21 Aug 2002 01:13:08 +0900


ソフト工房の近藤です。

Ryo Takahashi wrote:
> 高橋です。

>>GC を単純に長くして、最終アクセス時刻より一定時間経過
>>(当初予定していた GC タイム)したら、認証後に有効期限
>>切れになったのと同じ処理をするような分岐を全プログラム
>>に入れるというような方法はいかがでしょうか。
> 
> 
>  これは認証前、認証後にかかわらず、一定時間経過もしくは、
>  最終アクセス時間が拾えなかった場合は
>  有効期限切れとするという解釈でしょうか?

maxlifetime を極端に大きくすれば、セッション情報が
残るので、最終アクセス時刻が拾えるようになるだろう
というだけの話なんですが、お役にたつかな?。

# ただし、セッション数が多いとファイルシステムを圧迫
# して効率が落ちる可能性があります。
# 私は独自セッション管理なので、セッション情報格納
# ディレクトリの中を SUB DIRECTORY に分けて、ext2
# でも効率が落ちないようにしています。このあたりは
# 対策必要かもしれません。

例題で説明すると。

例えば、当初 GC を1時間、即ち、 php.ini で
session.gc_maxlifetime = 3600
に設定していたとします。

極論ですが、これを変更して、session.gc_maxlifetime = 72000
 即ち 20 時間に延長します。

セッションファイルに毎回記録する最終アクセス時刻から
1時間経過したら、当初の GC なしと同様の期限切れの
表示をします。maxlifetime をたっぷりとってあるので、
セッションファイルは生きています。

ログアウト処理をしたら、セッション情報を破棄するなり、
セッション情報ファイルにログアウトフラグを立てるなり
して区別します。

まあ、maxlifetime 以上経過したある時点で、セッション
情報は消えるわけですが、十分長く設定しておけば、
いいかと。

でも、そんなに長時間ログイン承認後かどうか判定する
必要があるのでしょうか?。

用途によるけど、何時間もアクセスしていないと、次の
アクセスのときは、承認したのと別の人がアクセスして
いる可能性もありますね。このあたりは問題ないので
しょうか?。

同一 PC を複数の人が使っているところも時々みかけます。
こういうところは、ユーザー管理という考えが貧弱な場合
が多いです。

余談ですが、
私は、日報とか入力一覧とか各画面などに、入力ユーザー
名を表示するようにして、パスワードを漏らしたり、
ログインしたまま放置して他の人が入力すると、あなたの
名前でDBに記録が残り、あなたの責任になるんですよという
実例をたっぷり見せて、ログイン管理の徹底をはかって
もらうようにしています。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-08-27(火)19:00-21:30 第5回 JPUG 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/