SESSIONS-IN-DATABASE SUPPORT

Support for a new configuration variable called $CFG->dbsessions
which enables sessions via database.  Based on code from Jason Cole's
team - thanks!
This commit is contained in:
moodler
2004-09-30 06:02:39 +00:00
parent 855c11a67b
commit 42b90599be
7 changed files with 77 additions and 19 deletions
+11
View File
@@ -863,6 +863,17 @@ function main_upgrade($oldversion=0) {
execute_sql("ALTER TABLE {$CFG->prefix}user ADD INDEX auth (auth)");
}
if ($oldversion < 2004093001) { // add new table for sessions storage
execute_sql(" CREATE TABLE `{$CFG->prefix}sessions` (
`sesskey` char(32) NOT null,
`expiry` int(11) unsigned NOT null,
`expireref` varchar(64),
`data` text NOT null,
PRIMARY KEY (`sesskey`),
KEY (`expiry`)
) TYPE=MyISAM COMMENT='Optional database session storage, not used by default';");
}
return $result;
}
+14
View File
@@ -301,6 +301,20 @@ CREATE TABLE `prefix_scale` (
# --------------------------------------------------------
#
# Table structure for table `sessions`
#
CREATE TABLE `prefix_sessions` (
`sesskey` char(32) NOT null,
`expiry` int(11) unsigned NOT null,
`expireref` varchar(64),
`data` text NOT null,
PRIMARY KEY (`sesskey`),
KEY (`expiry`)
) TYPE=MyISAM COMMENT='Optional database session storage, not used by default';
# --------------------------------------------------------
#
# Table structure for table `user`
#
+11
View File
@@ -601,6 +601,17 @@ function main_upgrade($oldversion=0) {
if ($oldversion < 2004092000) { //redoing this just to be sure that column type is text (postgres type changes didnt work when this was done first time)
table_column("config", "value", "value", "text", "", "", "");
}
if ($oldversion < 2004093001) { // add new table for sessions storage
execute_sql(" CREATE TABLE {$CFG->prefix}sessions (
sesskey char(32) PRIMARY KEY,
expiry integer NOT null,
expireref varchar(64),
data text NOT null
);");
execute_sql(" CREATE INDEX {$CFG->prefix}sessions_expiry_idx ON {$CFG->prefix}sessions (expiry)");
}
return $result;
+8
View File
@@ -172,6 +172,14 @@ CREATE TABLE prefix_scale (
timemodified integer NOT NULL default '0'
);
CREATE TABLE prefix_sessions (
sesskey char(32) PRIMARY KEY,
expiry integer NOT null,
expireref varchar(64),
data text NOT null
);
CREATE INDEX prefix_sessions_expiry_idx ON prefix_sessions (expiry);
CREATE TABLE prefix_cache_filters (
id SERIAL PRIMARY KEY,
+11 -10
View File
@@ -8,22 +8,23 @@
'allusersaresitestudents' => true,
'auth' => 'email',
'auth_pop3mailbox' => 'INBOX',
'autologinguests' => 0,
'autologinguests' => 0,
'cachetext' => 60,
'changepassword' => true,
'country' => '',
'dbsessions' => false,
'debug' => 7,
'deleteunconfirmed' => 168,
'digestmailtime' => 17,
'deleteunconfirmed' => 168,
'digestmailtime' => 17,
'displayloginfailures' => '',
'enablerssfeeds' => 0,
'enablerssfeeds' => 0,
'enrol' => 'internal',
'extendedusernamechars' => false,
'extendedusernamechars' => false,
'editorbackgroundcolor' => '#ffffff',
'editorfontfamily' => 'Trebuchet MS,Verdana,Arial,Helvetica,sans-serif',
'editorfontsize' => '',
'editorkillword' => 1,
'editorspelling' => 0,
'editorkillword' => 1,
'editorspelling' => 0,
'editorfontlist' => 'Trebuchet:Trebuchet MS,Verdana,Arial,Helvetica,sans-serif;Arial:arial,helvetica,sans-serif;Courier New:courier new,courier,monospace;Georgia:georgia,times new roman,times,serif;Tahoma:tahoma,arial,helvetica,sans-serif;Times New Roman:times new roman,times,serif;Verdana:verdana,arial,helvetica,sans-serif;Impact:impact;Wingdings:wingdings',
'filteruploadedfiles' => true,
'forcelogin' => false,
@@ -53,16 +54,16 @@
'secureforms' => false,
'sessioncookie' => '',
'sessiontimeout' => 7200,
'showsiteparticipantslist' => 0,
'showsiteparticipantslist' => 0,
'slasharguments' => 1,
'smtphosts' => '',
'smtppass' => '',
'smtpuser' => '',
'style' => 'default',
'teacherassignteachers' => true,
'teacherassignteachers' => true,
'template' => 'default',
'textfilters' => 'mod/glossary/dynalink.php',
'timezone' => 99,
'timezone' => 99,
'theme' => 'standard',
'unzip' => '',
'zip' => ''
+21 -8
View File
@@ -169,16 +169,29 @@ global $THEME;
}
$smarty->compile_dir = $CFG->dataroot .'/cache';
/// Set session timeouts
if (!empty($CFG->sessiontimeout)) {
ini_set('session.gc_maxlifetime', $CFG->sessiontimeout);
}
/// Set up session handling
if (empty($CFG->dbsessions)) { /// File-based sessions
if (!empty($CFG->sessiontimeout)) {
ini_set('session.gc_maxlifetime', $CFG->sessiontimeout);
}
if (!file_exists($CFG->dataroot .'/sessions')) {
make_upload_directory('sessions');
}
ini_set('session.save_path', $CFG->dataroot .'/sessions');
/// Set custom session path
if (!file_exists($CFG->dataroot .'/sessions')) {
make_upload_directory('sessions');
} else { /// Database sessions
ini_set('session.save_handler', 'user');
$ADODB_SESSION_DRIVER = $CFG->dbtype;
$ADODB_SESSION_CONNECT = $CFG->dbhost;
$ADODB_SESSION_USER = $CFG->dbuser;
$ADODB_SESSION_PWD = $CFG->dbpass;
$ADODB_SESSION_DB = $CFG->dbname;
$ADODB_SESSION_TBL = $CFG->prefix.'sessions';
require_once($CFG->libdir. '/adodb/session/adodb-session.php');
}
ini_set('session.save_path', $CFG->dataroot .'/sessions');
/// Set sessioncookie variable if it isn't already
if (!isset($CFG->sessioncookie)) {
+1 -1
View File
@@ -6,7 +6,7 @@
// This is compared against the values stored in the database to determine
// whether upgrades should be performed (see lib/db/*.php)
$version = 2004092700; // YYYYMMDD = date of first major branch release 1.4
$version = 2004093001; // YYYYMMDD = date of first major branch release 1.4
// XY = increments within a single day
$release = '1.5 UNSTABLE DEVELOPMENT'; // Human-friendly version name