1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20810 -->
4 <sect1 id="zend.session.savehandler.dbtable">
5 <title>Zend_Session_SaveHandler_DbTable</title>
8 <classname>Zend_Session_SaveHandler_DbTable</classname> の基本セットアップには、少なくとも
9 設定配列/<classname>Zend_Config</classname> オブジェクトの各設定を意味する 4 つのカラムが必要です。
10 primary は主キーで、デフォルトは単なるセッション ID となります。
12 modified は、最終更新日付を表す Unix タイムスタンプです。
13 lifetime は、セッションの有効期間です (<command>modified + lifetime > time()</command>)。
14 そして data が、セッションに保存されているデータをシリアライズしたものです。
17 <example id="zend.session.savehandler.dbtable.basic">
20 <programlisting language="SQL"><![CDATA[
21 CREATE TABLE `session` (
30 <programlisting language="php"><![CDATA[
32 $db = Zend_Db::factory('Pdo_Mysql', array(
33 'host' =>'example.com',
34 'username' => 'dbuser',
35 'password' => '******',
39 // Zend_Db_Table のデフォルトアダプタを設定するか、DB 接続オブジェクトを
40 // 保存ハンドラの $config に直接私増す
41 Zend_Db_Table_Abstract::setDefaultAdapter($db);
45 'modifiedColumn' => 'modified',
46 'dataColumn' => 'data',
47 'lifetimeColumn' => 'lifetime'
50 // Zend_Session_SaveHandler_DbTable を作成し、それを
51 // Zend_Session の保存ハンドラとして設定します
52 Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
55 Zend_Session::start();
57 // これで、ふつうに Zend_Session を使えるようになります
62 <classname>Zend_Session_SaveHandler_DbTable</classname> で、
63 複数カラムの主キーを使用することもできます。
66 <example id="zend.session.savehandler.dbtable.multi-column-key">
67 <title>複数カラムの主キーの使用</title>
69 <programlisting language="SQL"><![CDATA[
70 CREATE TABLE `session` (
71 `session_id` char(32) NOT NULL,
72 `save_path` varchar(32) NOT NULL,
73 `name` varchar(32) NOT NULL DEFAULT '',
77 PRIMARY KEY (`Session_ID`, `save_path`, `name`)
81 <programlisting language="php"><![CDATA[
82 // 先ほど同様にまず DB 接続を設定します
83 // 注意: この設定は Zend_Db_Table にも渡されることに注意しましょう
84 // テーブル固有の内容についてもここで設定できます
86 'name' => 'session', // Zend_Db_Table のテーブル名
88 'session_id', // PHP のセッション ID
89 'save_path', // session.save_path
92 'primaryAssignment' => array(
93 // 保存ハンドラに、どのカラムが主キーとなるのかを
94 // 教えなければなりません。その順番が重要です。
95 'sessionId', // 主キーの最初のカラムはセッション ID
96 'sessionSavePath', // 主キーの 2 番目のカラムは保存パス
97 'sessionName', // 主キーの 3 番目のカラムはセッション名
99 'modifiedColumn' => 'modified', // セッションの有効期間
100 'dataColumn' => 'session_data', // シリアライズしたデータ
101 'lifetimeColumn' => 'lifetime', // 指定したレコードの生存期間
104 // Zend_Session に、この保存ハンドラを使うように通知します
105 Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
108 Zend_Session::start();
110 // ふつうに Zend_Session を使用します