PHP-Session-0.15 > PHP::Session

名前

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.

SEE ALSO

Apache::Session::PHP, WDDX, Apache::Session, CGI::kSession