HTTP::Session::Store::DBI - store session data in DBI for HTTP::Session
use HTTP::Session;
my $session = HTTP::Session->new(
store => HTTP::Session::Store::DBI->new( {
dbh => ["dbi:SQLite:dbname=xxx", '', '', {RaiseError => 1}]
} ),
state => ...,
request => ...,
);
store session data in DBI. read HTTP::Session for usage.
- dbh
- ArrayRef which passes to DBI->connect(@$_)
or Instance of DBI->connect
- expires
- session expire time(in seconds)
- sid_table
- the table name where session stores. default is 'session'
- sid_col
- the session_id column name. default is 'sid'
- data_col
- the data column name. default is 'data'
- expires_col
- the expires column name. default is 'expires'
- clean_thres
- default is '0.001'. because DBI do NOT delete expired data itself, we have
code in sub delete
if ( rand() < $self->clean_thres ) {
my $time_now = time();
$dbh->do(qq~DELETE FROM $sid_table WHERE expires < $time_now~);
}
set it to 0 if we do NOT want it.
SQLite:
CREATE TABLE session (
sid VARCHAR(32) PRIMARY KEY,
data TEXT,
expires INTEGER UNSIGNED NOT NULL,
UNIQUE(sid)
);
- select
- update
- delete
- insert
- for internal use only
Fayland Lam, "<fayland at gmail.com>"
Copyright 2008 Fayland Lam, all rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.