The basic setup for Zend_Session_SaveHandler_DbTable must at least
have four columns, denoted in the config array/Zend_Config object:
primary, which is the primary key and defaults to just the session
id which by default is a string of length 32;
modified, which is the unix timestamp of the last modified date;
lifetime, which is the lifetime of the session (modified + lifetime > time());
and data, which is the serialized data stored in the session
Example #1 Basic Setup
CREATE TABLE `session` ( `id` char(32), `modified` int, `lifetime` int, `data` text, PRIMARY KEY (`id`) );//get your database connection ready $db = Zend_Db::factory('Pdo_Mysql', array( 'host' =>'example.com', 'username' => 'dbuser', 'password' => '******', 'dbname' => 'dbname' )); //you can either set the Zend_Db_Table default adapter //or you can pass the db connection straight to the save handler $config Zend_Db_Table_Abstract::setDefaultAdapter($db); $config = array( 'name' => 'session', 'primary' => 'id', 'modifiedColumn' => 'modified', 'dataColumn' => 'data', 'lifetimeColumn' => 'lifetime' ); //create your Zend_Session_SaveHandler_DbTable and //set the save handler for Zend_Session Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config)); //start your session! Zend_Session::start(); //now you can use Zend_Session like any other time
You can also use Multiple Columns in your primary key for
Zend_Session_SaveHandler_DbTable.
Example #2 Using a Multi-Column Primary Key
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`) );//setup your DB connection like before //NOTE: this config is also passed to Zend_Db_Table so anything specific //to the table can be put in the config as well $config = array( 'name' => 'session', //table name as per Zend_Db_Table 'primary' => array( 'session_id', //the sessionID given by PHP 'save_path', //session.save_path 'name', //session name ), 'primaryAssignment' => array( //you must tell the save handler which columns you //are using as the primary key. ORDER IS IMPORTANT 'sessionId', //first column of the primary key is of the sessionID 'sessionSavePath', //second column of the primary key is the save path 'sessionName', //third column of the primary key is the session name ), 'modifiedColumn' => 'modified', //time the session should expire 'dataColumn' => 'session_data', //serialized data 'lifetimeColumn' => 'lifetime', //end of life for a specific record ); //Tell Zend_Session to use your Save Handler Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config)); //start your session Zend_Session::start(); //use Zend_Session as normal
Không có nhận xét nào:
Đăng nhận xét