Craft DB Sessions Handler
For Craft 2.x. Sets up a database sesssion handler using Craft's
existing DB and Caching libraries to ensure that only a single
database connection is ever created., (*1)
This is not a true Craft plugin, but is best distributed as one., (*2)
Installation
Install through composer (recommended):, (*3)
composer require imarc/craft-dbsessions
Alternatively place all files into a craft/plugins/dbsessions
directory., (*4)
Usage
Add the following at the very top of your public/index.php
file:, (*5)
require __DIR__ . '/../craft/plugins/dbsessions/SessionHandler.php';
\Imarc\CraftDatabaseSessions\SessionHandler::register();
Your sessions will now be stored in craft's database instead of on the filesystem., (*6)
The dbsessions_sessions
database table used by this library should be created automatically. If there
are restrictive database permissions, you can use the following migration to create the table manually:, (*7)
(sql)
CREATE TABLE dbsessions_sessions (
id char(128) NOT NULL PRIMARY KEY,
expire int(11) NULL,
value longblob NULL
);
, (*8)
Why?
Sometimes, in an high-availability environment with multiple application servers, storing the sessions
directly on the filesystem is not ideal as there is no consistency to which application server
an end-user is hitting. Redis or Memcached is recommended over using the DB for sessions as Craft can
work with those out of the box, but DB is fine if those services aren't available for whatever reason., (*9)