Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przechowywanie sesji w tabeli bazy danych nie działa (przy użyciu Zend_Session_SaveHandler_DbTable)

Właśnie udało mi się to uruchomić:

Mój plik application.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"

mój 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();
}

Ta funkcja została umieszczona jako pierwsza funkcja w pliku bootstrap.php, ponieważ sesje są uruchamiane, gdy po raz pierwszy konstruujesz obiekt Zend_Session_Namespace. Jeśli to zrobisz, zanim zostanie wywołana funkcja _initSession(), może zostać uruchomiona standardowa sesja oparta na plikach.

Wreszcie 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;

Gdzieś przeczytałem, że tabelą musi być 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. Django self join , Jak przekonwertować to zapytanie na zapytanie ORM

  2. System prywatnych wiadomości. Wyświetlanie ostatniej wiadomości z każdej rozmowy

  3. Tworzenie dynamicznych linków za pomocą PHP/MySQL

  4. ORDER BY Kolor z kodem szesnastkowym jako kryterium w MySQL

  5. Wydrukuj dane w zestawie wyników wraz z nazwami kolumn