| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <!-- EN-Revision: 24249 -->
- <sect1 id="zend.session.savehandler.dbtable">
- <title>Zend_Session_SaveHandler_DbTable(日本語)</title>
- <para>
- <classname>Zend_Session_SaveHandler_DbTable</classname> の基本セットアップには、少なくとも
- 設定配列/<classname>Zend_Config</classname> オブジェクトの各設定を意味する 4 つのカラムが必要です。
- primary は主キーで、デフォルトは単なるセッション ID となります。
- デフォルトでは 32 桁の文字列です。
- modified は、最終更新日付を表す Unix タイムスタンプです。
- lifetime は、セッションの有効期間です (<command>modified + lifetime > time()</command>)。
- そして data が、セッションに保存されているデータをシリアライズしたものです。
- </para>
- <example id="zend.session.savehandler.dbtable.basic">
- <title>基本的な設定</title>
- <programlisting language="SQL"><![CDATA[
- CREATE TABLE `session` (
- `id` char(32),
- `modified` int,
- `lifetime` int,
- `data` text,
- PRIMARY KEY (`id`)
- );
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- // データベース接続を準備します
- $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);
- $config = array(
- '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 を使えるようになります
- ]]></programlisting>
- </example>
- <para>
- <classname>Zend_Session_SaveHandler_DbTable</classname> で、
- 複数カラムの主キーを使用することもできます。
- </para>
- <example id="zend.session.savehandler.dbtable.multi-column-key">
- <title>複数カラムの主キーの使用</title>
- <programlisting language="SQL"><![CDATA[
- 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`)
- );
- ]]></programlisting>
- <programlisting language="php"><![CDATA[
- // 先ほど同様にまず DB 接続を設定します
- // 注意: この設定は Zend_Db_Table にも渡されることに注意しましょう
- // テーブル固有の内容についてもここで設定できます
- $config = array(
- 'name' => 'session', // Zend_Db_Table のテーブル名
- 'primary' => array(
- '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 を使用します
- ]]></programlisting>
- </example>
- </sect1>
- <!--
- vim:se ts=4 sw=4 et:
- -->
|