Zend_Session_SaveHandler_DbTable(日本語)
Zend_Session_SaveHandler_DbTable の基本セットアップには、少なくとも
設定配列/Zend_Config オブジェクトの各設定を意味する 4 つのカラムが必要です。
primary は主キーで、デフォルトは単なるセッション ID となります。
デフォルトでは 32 桁の文字列です。
modified は、最終更新日付を表す Unix タイムスタンプです。
lifetime は、セッションの有効期間です (modified + lifetime > time())。
そして data が、セッションに保存されているデータをシリアライズしたものです。
CREATE TABLE `session` (
`id` char(32),
`modified` int,
`lifetime` int,
`data` text,
PRIMARY KEY (`id`)
);
// データベース接続を準備します
$db = Zend_Db:: factory('Pdo_Mysql', array(
'host' =>'example.com',
'username' => 'dbuser',
'password' => '******',
'dbname' => 'dbname'
));
// Zend_Db_Table のデフォルトアダプタを設定するか、DB 接続オブジェクトを
// 保存ハンドラの $config に直接私増す
Zend_Db_Table_Abstract::setDefaultAdapter($db);
'name' => 'session',
'primary' => 'id',
'modifiedColumn' => 'modified',
'dataColumn' => 'data',
'lifetimeColumn' => 'lifetime'
);
// Zend_Session_SaveHandler_DbTable を作成し、それを
// Zend_Session の保存ハンドラとして設定します
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
// セッション開始!
Zend_Session::start();
// これで、ふつうに Zend_Session を使えるようになります
Zend_Session_SaveHandler_DbTable で、
複数カラムの主キーを使用することもできます。
CREATE TABLE `session` (
`session_id` char(32) NOT NULL,
`save_path` varchar(32) NOT NULL,
`name` varchar(32) NOT NULL DEFAULT '',
`modified` int,
`lifetime` int,
`session_data` text,
PRIMARY KEY (`Session_ID`, `save_path`, `name`)
);
// 先ほど同様にまず DB 接続を設定します
// 注意: この設定は Zend_Db_Table にも渡されることに注意しましょう
// テーブル固有の内容についてもここで設定できます
'name' => 'session', // Zend_Db_Table のテーブル名
'session_id', // PHP のセッション ID
'save_path', // session.save_path
'name', // セッション名
),
'primaryAssignment' => array(
// 保存ハンドラに、どのカラムが主キーとなるのかを
// 教えなければなりません。その順番が重要です。
'sessionId', // 主キーの最初のカラムはセッション ID
'sessionSavePath', // 主キーの 2 番目のカラムは保存パス
'sessionName', // 主キーの 3 番目のカラムはセッション名
),
'modifiedColumn' => 'modified', // セッションの有効期間
'dataColumn' => 'session_data', // シリアライズしたデータ
'lifetimeColumn' => 'lifetime', // 指定したレコードの生存期間
);
// Zend_Session に、この保存ハンドラを使うように通知します
Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
// セッションを開始します
Zend_Session::start();
// ふつうに Zend_Session を使用します
|
|