DBSession - データベースを使ったセッションデータを作るのに便利なモジュール
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;
$session = DBSession->new($datasource, $user, $pass, $id); $session = DBSession->new($datasource, $user, $pass, $id, %opt);
DBSessionオブジェクトを返す。 $id が指定されている場合は、セッション情報を取得しようとする。 データベースに $id がなければ die で終了する。 $id が指定されていなければ、新たなセッションを取得し、 セッション情報をデータベースに挿入する。
データベースとの接続に失敗したり、新たなセッションが取得できない場合は、 die で終了する。
$id = $session->id();
セッションのIDを得る。
$ldate = $session->ldate();
セッションデータを最後に更新した時刻を得る。
$data = $session->data(); $value = $session->data($key); $session->data(%data);
セッションデータにアクセスする。 引数が0個の場合は、データの値を読み込む。 引数が1個の場合は、データの対応するキーの値を読み込む。 引数が2以上の偶数個(通常はハッシュ)の場合は、 データの対応するキーに値を代入する。 引数が3以上の奇数個の場合は、die で終了する。
$data = $session->read(); ($value1, $value2) = $session->read($key1, $key2);
セッションデータを読み込む。 引数が0個の場合は、データの値を読み込む。 引数がある場合は、引数の順番でそれぞれに対応するキーの値を返す。 ただし、呼び出し元のコンテキストがスカラー値を求めているときは 配列の最初の要素を返す。 (従って、引数が0,1個の場合は、data メソッドと同じ働きをする。)
$session->remove();
DELETE 文を実行して、セッションをデータベースから削除する。
$session->touch();
ldate を更新する。
$session->update();
データをシリアライズ化した後、 UPDATE 文を実行してデータをデータベースに格納する。
$sql = $session->createtable(); $sql = $session->createtable(noexec => 1);
TABLE を生成する。また、TABLE を生成するための SQL 文を返す。
opt::noexec
が true のときは CREATE TABLE 文の実行は行わない。
$sql = $session->droptable(); $sql = $session->droptable(noexec => 1);
TABLE を削除する。また、削除するための SQL 文を返す。
opt::noexec
が true のときは DROP TABLE 文の実行は行わない。
DBI, MIME::Base64, Digest::MD5, Storable
(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.