[PHP-users 4754] Re: PHPlib:マルチログイン防止をガーベッジコレクションで対応するべきか
php-users@php.gr.jp
php-users@php.gr.jp
Wed, 16 Jan 2002 22:23:02 +0900
はじめまして。泰野と申します。
横から口をはさむようで申し訳ないのですが、ひとこと。
PHPLIBのマニュアルに、「UserクラスのGCはメソッドstart()の中で、コメント
アウトされていて、これを外せば、きちんと動作する」という趣旨の記述があり
ます。
で、Userのstart()を見てみると、コメントアウトされている行は存在しません。
しかし、UserのスーパークラスSessionのstart()と比較したとき、それぞれの固
有の処理を差し引けば、gc()コールするかしないかの程度の差しかありません。
ですから、マニュアルの記述も考慮すると、Userクラスのstart()の最後に
$this->gc();
を追加すれば、UserクラスのGCは動作するのではないでしょうか?
自分で試したわけではないし、ソースを詳しく調査したわけでもないので、
間違っていたら御免なさい。
そうそう、私のところにあるPHPlibは7.2cです。
On Wed, 16 Jan 2002 19:54:46 +0900
"vantest" <vantest@livedoor.com> wrote:
> バンテストです。
>
> > これは,ログアウトとしても active_sessions のレコードが消えないという
> > ことですか? 試しに,session クラスで,
> > var $gc_time = 1;
> > var $gc_probability = 100;
> > のような設定をすると,ログアウトしてから1分以上経って別なセッションを
> > 開始すると古いセッションレコードが消えました.もちろんDBはPostgreSQLで
> > す(というか,コンテナに使用するRDBの種類によらず,GC機構はちゃんと働く
> > はずです).
> >
> > こういう話ではない?
>
> セッションレコードに対するGC機構は動作しています。
> 別なセッションを開始すると古いセッションレコードが消えます。
> 具体的には「active_sessions 」テーブルにおいて、nameフィールドが
> 「Example_Session」の
> 古いレコードだけが消えます。
> ところがnameフィールドが「Example_User」のレコードはそのまま残っています。
> 「Example_User」のレコードは認証が成功したタイミングでテーブルに記録されま
> す。
> いつまで経っても消えないので、GC機構にこのレコードを削除する機構を新たに組み
> 入れ
> ようと考えている訳です。
> 石井さまのサーバーではいかがでしょうか。
> 本来であれば、この「Example_User」のレコードもGC機構で削除されるのでしょう
> か。
> そうであればGC機構へ新たに削除機構を追加する必要がなくなりますが、現実には
> 削除されないのです。
> 参考までに次が私のサーバーにインストールされているバージョンです。
> インストールされているバージョンに関係ありますか?
> PHP → 4.0.3p11
> PHPLib → 7.2d
>
>
> _______________________________________________
> PHP-users mailing list
> PHP-users@php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
>
--
泰野 裕士
<yasuno@ops.ne.jp>