diff options
| author | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-10-02 07:09:48 +0000 |
|---|---|---|
| committer | alec <alec@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2008-10-02 07:09:48 +0000 |
| commit | 101fa9b6125bbb9a62090799ce6c96b405639ce8 (patch) | |
| tree | 5030e18dd1cf95f74fcea928d9455d9500e1b692 /roundcubemail/program/include/session.inc | |
| parent | ea17a9f6361f279635cdcbdb1afe6b5b26c032a2 (diff) | |
- improved rcube_sess_gc() when enable_caching=false, also use join() once
git-svn-id: https://svn.roundcube.net/trunk@1911 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/session.inc')
| -rw-r--r-- | roundcubemail/program/include/session.inc | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/roundcubemail/program/include/session.inc b/roundcubemail/program/include/session.inc index f9b7f86a4..d6486a43a 100644 --- a/roundcubemail/program/include/session.inc +++ b/roundcubemail/program/include/session.inc @@ -128,36 +128,40 @@ function rcube_sess_gc($maxlifetime) return false; } - // get all expired sessions - $sql_result = $DB->query( - "SELECT sess_id - FROM " . get_table_name('session') . " - WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", - $maxlifetime); + if ($rcmail->config->get('enable_caching')) { + // get all expired sessions + $sql_result = $DB->query( + "SELECT sess_id + FROM " . get_table_name('session') . " + WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", + $maxlifetime); - $exp_sessions = array(); - while ($sql_arr = $DB->fetch_assoc($sql_result)) { - $exp_sessions[] = $sql_arr['sess_id']; - } - - $caching = $rcmail->config->get('enable_caching'); + $exp_sessions = array(); + while ($sql_arr = $DB->fetch_assoc($sql_result)) { + $exp_sessions[] = $sql_arr['sess_id']; + } - if (sizeof($exp_sessions)) { - // delete session cache records - if ($caching) { + if (sizeof($exp_sessions)) { + $exp_sessions = "'" . join("','", $exp_sessions) . "'"; + // delete session cache records $DB->query("DELETE FROM " . get_table_name('cache') . " - WHERE session_id IN ('".join("','", $exp_sessions)."')"); + WHERE session_id IN (" . $exp_sessions . ")"); + + // delete session records + $DB->query("DELETE FROM " . get_table_name('session') . " + WHERE sess_id IN (" . $exp_sessions . ")"); } - // delete session records + // also run message cache GC + rcmail_message_cache_gc(); + + } else { + // just delete all expired sessions $DB->query("DELETE FROM " . get_table_name('session') . " - WHERE sess_id IN ('".join("','", $exp_sessions)."')"); + WHERE " . $DB->unixtimestamp($DB->now())."-".$DB->unixtimestamp('changed') . " > ?", + $maxlifetime); } - // also run message cache GC - if ($caching) { - rcmail_message_cache_gc(); - } rcmail_temp_gc(); return true; |
