diff options
| author | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-02-21 21:43:39 +0000 |
|---|---|---|
| committer | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2012-02-21 21:43:39 +0000 |
| commit | 13161d3135a52e80f01bf7923d711f2945649348 (patch) | |
| tree | 6c002c5ce6227e5eb2581f3be06577b267c617da /roundcubemail/program/include/rcmail.php | |
| parent | 333be7a2a0b9b10af7f2190c574b3f560b12b3ed (diff) | |
Refactored IMAP cache expunge: delegate to storage object; don't rely on deprecated 'enable_caching' config option
git-svn-id: https://svn.roundcube.net/trunk@5898 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/include/rcmail.php')
| -rw-r--r-- | roundcubemail/program/include/rcmail.php | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/roundcubemail/program/include/rcmail.php b/roundcubemail/program/include/rcmail.php index 3d5915ea5..9d1190ad6 100644 --- a/roundcubemail/program/include/rcmail.php +++ b/roundcubemail/program/include/rcmail.php @@ -129,6 +129,7 @@ class rcmail private $caches = array(); private $action_map = array(); private $shutdown_functions = array(); + private $expunge_cache = false; /** @@ -767,8 +768,7 @@ class rcmail $this->session = new rcube_session($this->get_dbh(), $this->config); $this->session->register_gc_handler('rcmail_temp_gc'); - if ($this->config->get('enable_caching')) - $this->session->register_gc_handler('rcmail_cache_gc'); + $this->session->register_gc_handler(array($this, 'cache_gc')); // start PHP session (if not in CLI mode) if ($_SERVER['REMOTE_ADDR']) @@ -1278,8 +1278,11 @@ class rcmail $cache->close(); } - if (is_object($this->storage)) + if (is_object($this->storage)) { + if ($this->expunge_cache) + $this->storage->expunge_cache(); $this->storage->close(); + } // before closing the database connection, write session data if ($_SERVER['REMOTE_ADDR'] && is_object($this->session)) { @@ -1316,6 +1319,18 @@ class rcmail /** + * Garbage collector for cache entries. + * Set flag to expunge caches on shutdown + */ + function cache_gc() + { + // because this gc function is called before storage is initialized, + // we just set a flag to expunge storage cache on shutdown. + $this->expunge_cache = true; + } + + + /** * Generate a unique token to be used in a form request * * @return string The request token |
