グローバルセッションの管理

Zend_Session_SaveHandler_DbTable(日本語)

Zend_Session_SaveHandler_DbTable の基本セットアップには、少なくとも 設定配列/Zend_Config オブジェクトの各設定を意味する 4 つのカラムが必要です。 primary は主キーで、デフォルトは単なるセッション ID となります。 デフォルトでは 32 桁の文字列です。 modified は、最終更新日付を表す Unix タイムスタンプです。 lifetime は、セッションの有効期間です (modified + lifetime > time())。 そして data が、セッションに保存されているデータをシリアライズしたものです。

Example #1 基本的な設定

  1. CREATE TABLE `session` (
  2.   `id` char(32),
  3.   `modified` int,
  4.   `lifetime` int,
  5.   `data` text,
  6.   PRIMARY KEY (`id`)
  7. );
  1. // データベース接続を準備します
  2. $db = Zend_Db::factory('Pdo_Mysql', array(
  3.     'host'        =>'example.com',
  4.     'username'    => 'dbuser',
  5.     'password'    => '******',
  6.     'dbname'    => 'dbname'
  7. ));
  8.  
  9. // Zend_Db_Table のデフォルトアダプタを設定するか、DB 接続オブジェクトを
  10. // 保存ハンドラの $config に直接私増す
  11. Zend_Db_Table_Abstract::setDefaultAdapter($db);
  12. $config = array(
  13.     'name'           => 'session',
  14.     'primary'        => 'id',
  15.     'modifiedColumn' => 'modified',
  16.     'dataColumn'     => 'data',
  17.     'lifetimeColumn' => 'lifetime'
  18. );
  19.  
  20. // Zend_Session_SaveHandler_DbTable を作成し、それを
  21. // Zend_Session の保存ハンドラとして設定します
  22. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  23.  
  24. // セッション開始!
  25. Zend_Session::start();
  26.  
  27. // これで、ふつうに Zend_Session を使えるようになります

Zend_Session_SaveHandler_DbTable で、 複数カラムの主キーを使用することもできます。

Example #2 複数カラムの主キーの使用

  1. CREATE TABLE `session` (
  2.     `session_id` char(32) NOT NULL,
  3.     `save_path` varchar(32) NOT NULL,
  4.     `name` varchar(32) NOT NULL DEFAULT '',
  5.     `modified` int,
  6.     `lifetime` int,
  7.     `session_data` text,
  8.     PRIMARY KEY (`Session_ID`, `save_path`, `name`)
  9. );
  1. // 先ほど同様にまず DB 接続を設定します
  2. // 注意: この設定は Zend_Db_Table にも渡されることに注意しましょう
  3. // テーブル固有の内容についてもここで設定できます
  4. $config = array(
  5.     'name'              => 'session', // Zend_Db_Table のテーブル名
  6.     'primary'           => array(
  7.         'session_id',   // PHP のセッション ID
  8.         'save_path',    // session.save_path
  9.         'name',         // セッション名
  10.     ),
  11.     'primaryAssignment' => array(
  12.         // 保存ハンドラに、どのカラムが主キーとなるのかを
  13.         // 教えなければなりません。その順番が重要です。
  14.         'sessionId', // 主キーの最初のカラムはセッション ID
  15.         'sessionSavePath', // 主キーの 2 番目のカラムは保存パス
  16.         'sessionName', // 主キーの 3 番目のカラムはセッション名
  17.     ),
  18.     'modifiedColumn'    => 'modified',     // セッションの有効期間
  19.     'dataColumn'        => 'session_data', // シリアライズしたデータ
  20.     'lifetimeColumn'    => 'lifetime',     // 指定したレコードの生存期間
  21. );
  22.  
  23. // Zend_Session に、この保存ハンドラを使うように通知します
  24. Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
  25.  
  26. // セッションを開始します
  27. Zend_Session::start();
  28.  
  29. // ふつうに Zend_Session を使用します

グローバルセッションの管理