名前¶
PHP::Session - PHPセッションファイルの読み書き
概要¶
use PHP::Session;
my $session = PHP::Session->new($id);
# session id
my $id = $session->id;
# セッションデータの get/set
my $foo = $session->get('foo');
$session->set(bar => $bar);
# セッションデータの削除
$session->unregister('foo');
# すべてのセッションデータを削除
$session->unset;
# データが登録されているかチェック
$session->is_registered('bar');
# セッションデータを保存
$session->save;
# セッションを破壊
$session->destroy;
# もし存在しなければ、セッションファイルを生成する
$session = PHP::Session->new($new_sid, { create => 1 });
説明¶
PHP::Session を使用するとPHP4のセッションファイルを読み書きすることが でき、PerlアプリケーションのセッションをPHP4と共有することができます。
セッション管理に Apache::Session のインタフェースを使用したい場合には、 Apache::Session::PHP を使用すると、このモジュールと Apache::Session の 橋渡しをうまくやってくれます。
オプション¶
コンストラクタ new
にはハッシュリファレンスでオプションを渡せます。
- save_path
-
セッションファイルが保持されるディレクトリパス。デフォルトは
/tmp
。 - serialize_handler
-
シリアライズハンドラのタイプ。現在サポートされているのはPHPデフォルト シリアライズハンドラのみ。
- create
-
存在しない場合にセッションファイルを生成するか。デフォルトは0。
- auto_save
-
変更をセッションファイルに自動的に保存するか。デフォルトは0。
以下のような場合に:
my $session = PHP::Session->new($sid, { auto_save => 1 }); $session->param(foo => 'bar'); # あーっと save() メソッドを忘れてる!
auto_save
を真の値にしておけば、パラメータを変更した後にsave
メ ソッドを呼び忘れても、セッションオブジェクトがスコープ外に消えるときに、 このモジュールが自動的にセッションファイルに保存します。0にしておいた場合(デフォルト)、かつ warnings がオンの場合には、以下の ような警告を発生させます:
PHP::Session: some keys are changed but not modified.
NOTES¶
PHP の配列は Perl のハッシュになります。
PHP でのオブジェクトは PHP::Session::Object (空のクラス) に bless され たオブジェクトとなり、元のクラス名は
_class
というキーに保持されま す。データを save() するときのロックは排他的な
flock
にて行われます。こ れは PHP の実装と同じです。十分なテストはおこなっていませんので、シリアライゼーションまわりでバグ があるかもしれません。もし見つけたらemailで教えてください。
TODO¶
WDDX.pm を使用して WDDX をサポートする。
作者¶
Tatsuhiko Miyagawa <[email protected]>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.