PgSession.pm


NAME

DBSession - データベースを使ったセッションデータを作るのに便利なモジュール


DESCRIPTION

httpd リクエストの間でセッションデータを共有するのに便利なモジュール。 データ毎に最終更新時刻を記憶しており、指定した有効期限を過ぎるとアクセス を拒否することができる。 PostgreSQL に対応。他のデータベースにも対応予定?

  use DBSession;
  # TABLE を生成する (Postgres の場合)
  $session = DBSession->new('dbi:Pg:dbname=mydbname', $user, $pass, undef,
                            noconnect => 1);
  $session->createtable(noexec => 1);
  # 新しいセッションを取得し、ID を表示する
  $session = DBSession->new('dbi:Pg:dbname=mydbname', $user, $pass);
  $id = $session->id;
  # 値を書き込む
  $session->data(key1 => $value1, key2 => [ $foo, $bar ] );
  undef $session;
  # セッションデータを読み込む
  $session = DBSession->new('dbi:Pg:dbname=mydbname', $user, $pass, $id);
  $val = $session->data(key1);
  $data = $session->data();
  # セッションを削除する
  $session->remove;
  # 最後の更新から15分以内ならばセッションを取得する
  $session = DBSession->new('dbi:Pg:dbname=mydbname', $user, $pass, $id,
                            interval => '15 months');
  # セッションの更新時刻を更新する
  $session->touch;

METHODS

new ( DATASOURCE, USER, PASS [,ID [,OPTION]] )
  $session = DBSession->new($datasource, $user, $pass, $id);
  $session = DBSession->new($datasource, $user, $pass, $id, %opt);

DBSessionオブジェクトを返す。 $id が指定されている場合は、セッション情報を取得しようとする。 データベースに $id がなければ die で終了する。 $id が指定されていなければ、新たなセッションを取得し、 セッション情報をデータベースに挿入する。

データベースとの接続に失敗したり、新たなセッションが取得できない場合は、 die で終了する。

DESTROY ( )
データベースのデータを更新した後、データベースとの接続を切断する。 (このため、ユーザは、これらの作業を手動で行わなくてよい。)

id ( )
  $id = $session->id();

セッションのIDを得る。

ldate ( )
  $ldate = $session->ldate();

セッションデータを最後に更新した時刻を得る。

data ( KEY or DATA )
  $data = $session->data();
  $value = $session->data($key);
  $session->data(%data);

セッションデータにアクセスする。 引数が0個の場合は、データの値を読み込む。 引数が1個の場合は、データの対応するキーの値を読み込む。 引数が2以上の偶数個(通常はハッシュ)の場合は、 データの対応するキーに値を代入する。 引数が3以上の奇数個の場合は、die で終了する。

read ( KEY or DATA )
  $data = $session->read();
  ($value1, $value2) = $session->read($key1, $key2);

セッションデータを読み込む。 引数が0個の場合は、データの値を読み込む。 引数がある場合は、引数の順番でそれぞれに対応するキーの値を返す。 ただし、呼び出し元のコンテキストがスカラー値を求めているときは 配列の最初の要素を返す。 (従って、引数が0,1個の場合は、data メソッドと同じ働きをする。)

remove ( )
  $session->remove();

DELETE 文を実行して、セッションをデータベースから削除する。

touch ( )
  $session->touch();

ldate を更新する。

update ( )
  $session->update();

データをシリアライズ化した後、 UPDATE 文を実行してデータをデータベースに格納する。

createtable ( [OPTION] )
  $sql = $session->createtable();
  $sql = $session->createtable(noexec => 1);

TABLE を生成する。また、TABLE を生成するための SQL 文を返す。 opt::noexec が true のときは CREATE TABLE 文の実行は行わない。

droptable ( )
  $sql = $session->droptable();
  $sql = $session->droptable(noexec => 1);

TABLE を削除する。また、削除するための SQL 文を返す。 opt::noexec が true のときは DROP TABLE 文の実行は行わない。


SEE ALSO

DBI, MIME::Base64, Digest::MD5, Storable


COPYRIGHT

(c) Kenji Nakahira <nakahira@bioele.nuee.nagoya-u.ac.jp>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.