Zend_Session-SaveHandler-DbTable.xml 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 14978 -->
  4. <sect1 id="zend.session.savehandler.dbtable">
  5. <title>Zend_Session_SaveHandler_DbTable</title>
  6. <para>
  7. Zend_Session_SaveHandler_DbTable の基本セットアップには、少なくとも
  8. 設定配列/Zend_Config オブジェクトの各設定を意味する 4 つのカラムが必要です。
  9. primary は主キーで、デフォルトは単なるセッション ID となります。
  10. デフォルトでは 32 桁の文字列です。
  11. modified は、最終更新日付を表す Unix タイムスタンプです。
  12. lifetime は、セッションの有効期間です (modified + lifetime > time())。
  13. そして data が、セッションに保存されているデータをシリアライズしたものです。
  14. </para>
  15. <example id="zend.session.savehandler.dbtable.basic">
  16. <title>基本的な設定</title>
  17. <programlisting role="SQL"><![CDATA[
  18. CREATE TABLE `session` (
  19. `id` char(32),
  20. `modified` int,
  21. `lifetime` int,
  22. `data` text,
  23. PRIMARY KEY (`id`)
  24. );
  25. ]]>
  26. </programlisting>
  27. <programlisting role="php"><![CDATA[
  28. // データベース接続を準備します
  29. $db = Zend_Db::factory('Pdo_Mysql', array(
  30. 'host' =>'example.com',
  31. 'username' => 'dbuser',
  32. 'password' => '******',
  33. 'dbname' => 'dbname'
  34. ));
  35. // Zend_Db_Table のデフォルトアダプタを設定するか、DB 接続オブジェクトを
  36. // 保存ハンドラの $config に直接私増す
  37. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  38. $config = array(
  39. 'name' => 'session',
  40. 'primary' => 'id',
  41. 'modifiedColumn' => 'modified',
  42. 'dataColumn' => 'data',
  43. 'lifetimeColumn' => 'lifetime'
  44. );
  45. // Zend_Session_SaveHandler_DbTable を作成し、それを
  46. // Zend_Session の保存ハンドラとして設定します
  47. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  48. // セッション開始!
  49. Zend_Session::start();
  50. // これで、ふつうに Zend_Session を使えるようになります
  51. ]]>
  52. </programlisting>
  53. </example>
  54. <para>
  55. Zend_Session_SaveHandler_DbTable で、複数カラムの主キーを使用することもできます。
  56. </para>
  57. <example id="zend.session.savehandler.dbtable.multi-column-key">
  58. <title>複数カラムの主キーの使用</title>
  59. <programlisting role="SQL"><![CDATA[
  60. CREATE TABLE `session` (
  61. `session_id` char(32) NOT NULL,
  62. `save_path` varchar(32) NOT NULL,
  63. `name` varchar(32) NOT NULL DEFAULT '',
  64. `modified` int,
  65. `lifetime` int,
  66. `session_data` text,
  67. PRIMARY KEY (`Session_ID`, `save_path`, `name`)
  68. );
  69. ]]>
  70. </programlisting>
  71. <programlisting role="php"><![CDATA[
  72. // 先ほど同様にまず DB 接続を設定します
  73. // 注意: この設定は Zend_Db_Table にも渡されることに注意しましょう
  74. // テーブル固有の内容についてもここで設定することができます
  75. $config = array(
  76. 'name' => 'session', // Zend_Db_Table のテーブル名
  77. 'primary' => array(
  78. 'session_id', // PHP のセッション ID
  79. 'save_path', // session.save_path
  80. 'name', // セッション名
  81. ),
  82. 'primaryAssignment' => array(
  83. // 保存ハンドラに、どのカラムが主キーとなるのかを
  84. // 教えなければなりません。その順番が重要です。
  85. 'sessionId', // 主キーの最初のカラムはセッション ID
  86. 'sessionSavePath', // 主キーの 2 番目のカラムは保存パス
  87. 'sessionName', // 主キーの 3 番目のカラムはセッション名
  88. ),
  89. 'modifiedColumn' => 'modified', // セッションの有効期間
  90. 'dataColumn' => 'session_data', // シリアライズしたデータ
  91. 'lifetimeColumn' => 'lifetime', // 指定したレコードの生存期間
  92. );
  93. // Zend_Session に、この保存ハンドラを使うように通知します
  94. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  95. // セッションを開始します
  96. Zend_Session::start();
  97. // ふつうに Zend_Session を使用します
  98. ]]>
  99. </programlisting>
  100. </example>
  101. </sect1>
  102. <!--
  103. vim:se ts=4 sw=4 et:
  104. -->