Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхраняването на сесиите в таблицата на DB не работи (използвайки Zend_Session_SaveHandler_DbTable)

Току-що успях да накарам това да работи:

Моето приложение.ini:

resources.db.isDefaultTableAdapter = true
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.dbname = "dbname"
resources.db.params.username = "username"
resources.db.params.password = "password"

моят bootstrap.php:

protected function _initSession() {
    $resource = $this->getPluginResource('db');
    $dbAdapter = $db = $resource->getDbAdapter();
    Zend_Registry::set("db", $dbAdapter);
    Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
    $config = array(
        'name' => 'session',
        'primary' => 'id',
        'modifiedColumn' => 'modified',
        'dataColumn' => 'data',
        'lifetimeColumn' => 'lifetime',
        'db' => $dbAdapter
    );

    Zend_Session::setSaveHandler(new Zend_Session_SaveHandler_DbTable($config));
    Zend_Session::start();
}

Тази функция беше поставена като първа функция в bootstrap.php, тъй като сесиите се стартират, когато конструирате обект Zend_Session_Namespace за първи път. Ако направите това, преди да бъде извикана функцията _initSession(), може да започне стандартна файлова сесия.

Накрая session.sql:

DROP TABLE IF EXISTS `session`;


CREATE TABLE `session` (

  `id` char(32) NOT NULL DEFAULT '',

  `modified` int(11) DEFAULT NULL,

  `lifetime` int(11) DEFAULT NULL,

  `data` text,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Някъде прочетох, че таблицата трябва да е InnoDB.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изчакате изчакване на mysql++ заявка в C++

  2. PHP, MySQL:не може да обясни тази недефинирана грешка в индекса

  3. Дублиран ключ на MYSQL не работи

  4. Как да итерирате по ред чрез mysql заявка в php

  5. MySQL LIKE с диапазон не работи