Plack::Session::Store::DBI - DBI-based session store
Contents
Copyright And License
Copyright 2009, 2010 Daisuke Maki "<daisuke@endeworks.jp>"
This library is free software; you can redistribute it and/or modify it under the same terms as Perl
itself.
perl v5.40.0 2024-09-28 Plack::Session::Store::DBI(3pm)
Description
This implements a DBI based storage for session data. By default it will use Storable and MIME::Base64 to
serialize and deserialize the data, but this can be configured easily.
This is a subclass of Plack::Session::Store and implements its full interface.
Name
Plack::Session::Store::DBI - DBI-based session store
Session Table Schema
Your session table must have at least the following schema structure:
CREATE TABLE sessions (
id CHAR(72) PRIMARY KEY,
session_data TEXT
);
Note that MySQL TEXT fields only store 64KB, so if your session data will exceed that size you'll want to
move to MEDIUMTEXT, MEDIUMBLOB, or larger.
Synopsis
use Plack::Builder;
use Plack::Middleware::Session;
use Plack::Session::Store::DBI;
my $app = sub {
return [ 200, [ 'Content-Type' => 'text/plain' ], [ 'Hello Foo' ] ];
};
builder {
enable 'Session',
store => Plack::Session::Store::DBI->new(
dbh => DBI->connect( @connect_args )
);
$app;
};
# set get_dbh callback for ondemand
builder {
enable 'Session',
store => Plack::Session::Store::DBI->new(
get_dbh => sub { DBI->connect( @connect_args ) }
);
$app;
};
# with custom serializer/deserializer
builder {
enable 'Session',
store => Plack::Session::Store::DBI->new(
dbh => DBI->connect( @connect_args )
# YAML takes its args in the opposite order
serializer => sub { YAML::DumpFile( reverse @_ ) },
deserializer => sub { YAML::LoadFile( @_ ) },
);
$app;
};
# use custom session table name
builder {
enable 'Session',
store => Plack::Session::Store::DBI->new(
dbh => DBI->connect( @connect_args ),
table_name => 'my_session_table',
);
$app;
};
