Zend_Session之DB使用

來源:互聯網
上載者:User

在Zend Framework中我們通過Zend_Session_SaveHandler_DbTable可以很方便的將Session的儲存放到資料庫中。我將簡單介紹如何將Session配置到資料庫中。

 

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

--<br />-- 表的結構 `sessions`<br />--<br />CREATE TABLE IF NOT EXISTS `sessions` (<br /> `id` char(32) collate utf8_unicode_ci NOT NULL,<br /> `modified` int(10) NOT NULL,<br /> `lifetime` int(10) NOT NULL,<br /> `data` text collate utf8_unicode_ci NOT NULL,<br /> PRIMARY KEY (`id`)<br />) 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--------------//<br />require_once 'Zend/Db.php';<br />require_once 'Zend/Session.php';<br />require_once 'Zend/Session/Namespace.php';<br />require_once 'Zend/Session/SaveHandler/DbTable.php';<br />//通過Zend_Db工廠建立Db<br />$dbAdapter = Zend_Db::factory('PDO_MYSQL',array(<br /> 'host' => 'localhost'<br /> ,'dbname' => '你的資料庫名稱'<br /> ,'username' => '使用者名稱'<br /> ,'password' => '密碼'<br /> ,'charset' => 'UTF8'<br /> ));<br />//配置SessionDB欄位<br />$dbColumn = array(<br /> 'db' => $dbAdapter<br /> ,'name' => 'sessions'<br /> ,'primary' => 'id'<br /> ,'modifiedColumn' => 'modified'<br /> ,'lifetimeColumn' => 'lifetime'<br /> ,'dataColumn' => 'data'<br />);<br />//new Zend_Session_SaveHandler_DbTable<br />Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($dbColumn));<br />//啟動會話<br />Zend_Session::start();<br />$sess = new Zend_Session_Namespace('count');<br />if(isset($sess->count)) {<br /> $sess->count += 1;<br />}else {<br /> $sess->count = 1;<br />}<br />echo $sess->count;<br />

 

注意:

在使用Zend_Session::start()之前,比較將php.ini中的session.auto_start設定為0,否則的話將會報Zend_Session_Exception異常。

可以通過.htaccess中設定

php_value session.auto_start   0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.