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

Hiroshi Ayukawa php-users@php.gr.jp
Mon, 25 Mar 2002 10:42:32 +0900


鮎川と申します。

>いまいち使い方が分かりません。疑問点は以下のような事項です。
>
>1. 登録する関数(open, close, read, write, destroy, gc)はコールバック関数
>なのでしょうか。
> つまり各種イベントに応じて呼び出されるといったたぐいのものなのでしょうか?

イベントといえば、イベントです。
が、実際には
関数session_start()が呼び出されたときにopenが実行されるであるとか、
関数session_registerで変数が宣言されたときにreadが呼ばれるとか、
スクリプトが終了したときにセッション変数の値を実際に書き込み保存するため
にwriteが呼ばれるとか、
さらにその後処理としてcloseが呼ばれるとか、
さらにその際(かな?)一定の確率でgcがよばれてゴミ処理をするとか、
関数session_destroy()が呼び出されたときにdestroyが実行されて適切にセッシ
ョンデータを破棄するとか、
、、、全ては予期されたタイミングで発生するイベントなので、イベントと呼ん
でいいものかどうかという感じです。


>2. 1のように判断して、まずマニュアル
> (http://www.php.net/manual/ja/function.session-set-save-handler.php)
> にある
> open, close,..等の関数を定義し、session_set_save_handler( "open", "close"
>, ... )
> を呼び題したあとsession_start()しました。
> session_register()で変数を登録しようとするとエラーになりました。
これはじっさいどんな関数群をsession_set_save_handlerで登録しようとしたの
かということと、そのエラーがどんなものなのかがわからないとコメントのしよ
うがありません。

また、忘れがちなのはphp.iniの設定です。
session.save_handler = user
とするのは必須です。これはぬかりなく行いましたか?

>この関数を使うべきではないのでしょうか?
この関数は実際にはわりとうまく動くようです。
私はこの関数でセッションの内容をmysqlに保存するものを実務でつくったこと
もあり、問題なくうごいています。

健闘をお祈りします。

鮎川 寛
http://hoover.ktplan.ne.jp/kaihatsu/php/index.php?type=top