[PHP-users 6475] Re: session_set_save_handler の使い方

Yasuo Ohgaki php-users@php.gr.jp
Sun, 24 Mar 2002 23:03:18 -0500


Shinya MATSUDA wrote:
> 松田です。
> 
> 
>>>この関数を使いたい意図としては、セッションが終了した時点で(タイムアウト等)、
>>>そのイベントを取りDBを更新するような処理を書きたいのですが、−−松田
>>
>>この用途のみであれば、register_shutdown_function()を
>>利用するべきです。−−大垣さん
> 
> 
> DBのtableにtimestampを持たせ
> <?
> register_shutdown_fuction( "myfunc" );
> 
> function myfunc(){
> 	//期限切れを更新
> }
> ?>
> こんな感じでしょうか?
> 
> 一つのセッションに更新したいレコードのIDをもたせ
> そのセッションが切れたら更新という処理は出来ないでしょうか?
> そのセッションがタイムアウトしたというイベントは取れないのでしょうか?

スクリプト実行時間のタイムアウトまたはユーザーがリクエストを
キャンセルした場合の処理をするのでは無いようですね。

セッションがタイムアウトした、と言うイベントはありませんが
userセーブハンドラを使うと処理ができます。当然ですが、
GCが行なわれるとデータ自体がなくなるのでタイムアウトした
かどうか判らなくなるので注意が必要と思います。
(と言うより、文面から推測するとGC関数で処理すれば良いように
思えます)

read関数で有効期限切れのセッションがあった場合、グローバル
変数のフラグをセットし、他の関数はそのフラグを見ると言う形
で実装できます。

関数があると便利な場合もあると思うので、session_pgsqlの
Taskに入れておきます。

--
Yasuo Ohgaki



__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/