Changeset 3e48d2ee in github for program/include/session.inc
- Timestamp:
- Nov 21, 2008 1:19:30 PM (4 years ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
- Children:
- dcf780a
- Parents:
- be7d3b6
- File:
-
- 1 edited
-
program/include/session.inc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
program/include/session.inc
ra2740628 r3e48d2ee 76 76 $key); 77 77 78 $now = $DB->fromunixtime(time()); 79 78 80 if ($DB->num_rows($sql_result)) { 79 81 $DB->query( 80 82 "UPDATE " . get_table_name('session') . " 81 SET vars=?, changed= " . $DB->now(). "83 SET vars=?, changed= " . $now . " 82 84 WHERE sess_id=?", 83 85 $vars, … … 88 90 "INSERT INTO " . get_table_name('session') . " 89 91 (sess_id, vars, ip, created, changed) 90 VALUES (?, ?, ?, " .$DB->now().", ".$DB->now().")",92 VALUES (?, ?, ?, " . $now . ", " . $now .")", 91 93 $key, 92 94 $vars, … … 108 110 } 109 111 112 $DB->query("DELETE FROM " . get_table_name('session') . " WHERE sess_id=?", $key); 113 114 // delete session entries in cache table 115 // on databases wthout foreign keys 116 if ($rcmail->config->get('enable_caching') && $DB->db_provider != 'pgsql') { 117 $DB->query("DELETE FROM " . get_table_name('cache') . " WHERE session_id=?", $key); 118 } 119 120 return true; 121 } 122 123 124 // garbage collecting function 125 function rcube_sess_gc($maxlifetime) 126 { 127 $rcmail = rcmail::get_instance(); 128 $DB = $rcmail->get_dbh(); 129 130 if ($DB->is_error()) { 131 return false; 132 } 133 134 $now = $DB->fromunixtime(time() - $maxlifetime); 135 110 136 // delete session entries in cache table 111 137 if ($rcmail->config->get('enable_caching')) { 112 $DB->query("DELETE FROM " . get_table_name('cache') . " WHERE session_id=?", $key); 113 } 114 115 $DB->query("DELETE FROM " . get_table_name('session') . " WHERE sess_id=?", $key); 116 117 return true; 118 } 119 120 121 // garbage collecting function 122 function rcube_sess_gc($maxlifetime) 123 { 124 $rcmail = rcmail::get_instance(); 125 $DB = $rcmail->get_dbh(); 126 127 if ($DB->is_error()) { 128 return false; 129 } 130 131 if ($rcmail->config->get('enable_caching')) { 132 // get all expired sessions 133 $sql_result = $DB->query( 134 "SELECT sess_id 135 FROM " . get_table_name('session') . " 136 WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", 137 $maxlifetime); 138 139 $exp_sessions = array(); 140 while ($sql_arr = $DB->fetch_assoc($sql_result)) { 141 $exp_sessions[] = $sql_arr['sess_id']; 138 139 // on databases wthout foreign keys... 140 if($DB->db_provider != 'pgsql') { 141 142 // get all expired sessions 143 $sql_result = $DB->query( 144 "SELECT sess_id FROM " . get_table_name('session') . " 145 WHERE changed < " . $now); 146 147 $exp_sessions = array(); 148 while ($sql_arr = $DB->fetch_assoc($sql_result)) { 149 $exp_sessions[] = $sql_arr['sess_id']; 150 } 151 152 if (sizeof($exp_sessions)) { 153 $exp_sessions = "'" . join("','", $exp_sessions) . "'"; 154 // delete session cache records 155 $DB->query("DELETE FROM " . get_table_name('cache') . " 156 WHERE session_id IN (" . $exp_sessions . ")"); 157 } 142 158 } 143 144 if (sizeof($exp_sessions)) {145 $exp_sessions = "'" . join("','", $exp_sessions) . "'";146 // delete session cache records147 $DB->query("DELETE FROM " . get_table_name('cache') . "148 WHERE session_id IN (" . $exp_sessions . ")");149 150 // delete session records151 $DB->query("DELETE FROM " . get_table_name('session') . "152 WHERE sess_id IN (" . $exp_sessions . ")");153 }154 155 159 // also run message cache GC 156 160 rcmail_message_cache_gc(); 157 158 } else { 159 // just delete all expired sessions 160 $DB->query("DELETE FROM " . get_table_name('session') . " 161 WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", 162 $maxlifetime); 163 } 161 } 162 163 // just delete all expired sessions 164 $DB->query("DELETE FROM " . get_table_name('session') . " 165 WHERE changed < " . $now); 164 166 165 167 rcmail_temp_gc();
Note: See TracChangeset
for help on using the changeset viewer.
