Zend_Session以數據庫存session方法

Zend_Session以數據庫存session方法
在Zend Framework中咱們經過Zend_Session_SaveHandler_DbTable能夠很方便的將Session的存儲放到數據庫中。我將簡單介紹如何將Session配置到數據庫中。

首先是建立sessions表,以MYSQL爲例

-- -- 表的結構 `sessions` --  CREATE TABLE IF NOT EXISTS `sessions` 
( `id` char(32) collate utf8_unicode_ci NOT NULL, 
`modified` int(10) NOT NULL, 
`lifetime` int(10) NOT NULL, 
`data` text collate utf8_unicode_ci NOT NULL,  PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

接下來咱們須要在Zend當中new一個Zend_Session_SaveHandler_DbTable,在那裏加載合適呢?若是你使用的是Zend Framework1.8的話,能夠在Bootstrap當中,經過application.ini來選定是否配置Zend_Session_SaveHandler_DbTable。若是是比較老的版本的話可直接寫在入口文件index.php當中。下面咱們就直接來配置它:

//-------------sessionDB--------------//  require_once 'Zend/Db.php';  require_once 'Zend/Session.php';  require_once 'Zend/Session/Namespace.php';  require_once 'Zend/Session/SaveHandler/DbTable.php'; //經過Zend_Db工廠建立Db  $dbAdapter = Zend_Db::factory('PDO_MYSQL',array(                      'host' => 'localhost'                      ,'dbname' => '你的數據庫名稱'                      ,'username' => '用戶名'                      ,'password' => '密碼'                      ,'charset' => 'UTF8'              )); //配置SessionDB字段  $dbColumn = array(      'db' => $dbAdapter      ,'name' => 'sessions'      ,'primary' => 'id'      ,'modifiedColumn' => 'modified'      ,'lifetimeColumn' => 'lifetime'      ,'dataColumn' => 'data' ); 
//new Zend_Session_SaveHandler_DbTable 

Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($dbColumn)); php

//啓動會話 數據庫

Zend_Session::start(); session

$sess = new Zend_Session_Namespace('count'); app

if(isset($sess->count)) {      $sess->count += 1; }else {      $sess->count = 1; }  echo $sess->count;

注意:

在使用Zend_Session::start()以前,比較將php.ini中的session.auto_start設置爲0,不然的話將會報Zend_Session_Exception異常。

能夠經過.htaccess中設置

php_value session.auto_start   0
相關文章
相關標籤/搜索