public function setSessionStorage() { $options = new DbTableGatewayOptions(); $options->setDataColumn('session_data')->setIdColumn('session_id')->setLifetimeColumn('life_time')->setModifiedColumn('update_time')->setNameColumn('session_name'); $handler = new DbTableGateway($this->tblgw, $options); $this->sessionManager = new SessionManager(); $this->sessionManager->setSaveHandler($handler); if ($this->sessionConfig) { $options = gv('options', $this->sessionConfig); $sessionConfig = new \Zend\Session\Config\SessionConfig(); $sessionConfig->setOptions($options); $this->sessionManager->setConfig($sessionConfig); } $this->sessionManager->setSaveHandler($handler); Container::setDefaultManager($this->sessionManager); $this->sessionManager->start(); $this->container = new Container('init'); if (!$this->container->init) { $request = $this->request; $this->container->init = 1; $this->container->remoteAddr = $request->getServer()->get('REMOTE_ADDR'); $this->container->httpUserAgent = $request->getServer()->get('HTTP_USER_AGENT'); $this->container->create = time(); } // update session id if (SESSION_ID_EXPIRE < time() - $this->container->create) { $this->sessionManager->regenerateId(true); $this->container->create = time(); } return $this->sessionManager; }
/** * Garbage Collection * * @param int $maxlifetime * @return true */ public function gc($maxlifetime) { $this->delete($this->getAdapter()->quoteIdentifier($this->options->getModifiedColumn()) . ' + ' . $this->getAdapter()->quoteIdentifier($this->options->getLifetimeColumn()) . ' < ' . $this->getAdapter()->quote(time())); return true; }
public function testSetters() { $options = new DbTableGatewayOptions(); $options->setIdColumn('testId')->setNameColumn('testName')->setModifiedColumn('testModified')->setLifetimeColumn('testLifetime')->setDataColumn('testData'); $this->assertEquals('testId', $options->getIdColumn()); $this->assertEquals('testName', $options->getNameColumn()); $this->assertEquals('testModified', $options->getModifiedColumn()); $this->assertEquals('testLifetime', $options->getLifetimeColumn()); $this->assertEquals('testData', $options->getDataColumn()); }
public function setSessionStorage() { $gwOpts = new DbTableGatewayOptions(); $gwOpts->setDataColumn('data'); $gwOpts->setIdColumn('id'); $gwOpts->setLifetimeColumn('lifetime'); $gwOpts->setModifiedColumn('modified'); $gwOpts->setNameColumn('name'); if (isset($this->serviceConfig['base64Encode']) && $this->serviceConfig['base64Encode']) { $saveHandler = new EncodedDbTableGateway($this->tblGW, $gwOpts); } else { $saveHandler = new DbTableGateway($this->tblGW, $gwOpts); } $sessionManager = new SessionManager(); if ($this->sessionConfig) { $sessionConfig = new \Zend\Session\Config\SessionConfig(); $sessionConfig->setOptions($this->sessionConfig); $sessionManager->setConfig($sessionConfig); } $sessionManager->setSaveHandler($saveHandler); Container::setDefaultManager($sessionManager); $sessionManager->start(); }
/** * Garbage Collection * * @param int $maxlifetime * @return true */ public function gc($maxlifetime) { $platform = $this->tableGateway->getAdapter()->getPlatform(); return (bool) $this->tableGateway->delete(sprintf('%s + %s < %d', $platform->quoteIdentifier($this->options->getModifiedColumn()), $platform->quoteIdentifier($this->options->getLifetimeColumn()), time())); }
/** * Sets up the database connection and creates the table for session data * * @param Zend\Session\SaveHandler\DbTableGatewayOptions $options * @return void */ protected function setupDb(DbTableGatewayOptions $options) { $this->adapter = new Adapter(array( 'driver' => 'pdo_sqlite', 'database' => ':memory:', )); $query = <<<EOD CREATE TABLE `sessions` ( `{$options->getIdColumn()}` text NOT NULL, `{$options->getNameColumn()}` text NOT NULL, `{$options->getModifiedColumn()}` int(11) default NULL, `{$options->getLifetimeColumn()}` int(11) default NULL, `{$options->getDataColumn()}` text, PRIMARY KEY (`{$options->getIdColumn()}`, `{$options->getNameColumn()}`) ); EOD; $this->adapter->query($query, Adapter::QUERY_MODE_EXECUTE); $this->tableGateway = new TableGateway('sessions', $this->adapter); }