Added message cache garbage collector
| | |
| | | // this is recommended if the IMAP server does not run on the same machine |
| | | $rcmail_config['enable_caching'] = TRUE; |
| | | |
| | | // lifetime of message cache |
| | | // possible units: s, m, h, d, w |
| | | $rcmail_config['message_cache_lifetime'] = '10d'; |
| | | |
| | | // automatically create a new RoundCube user when log-in the first time. |
| | | // a new user will be created once the IMAP login succeeds. |
| | | // set to false if only registered users can use this service |
| | |
| | | } |
| | | |
| | | |
| | | // remove all expired message cache records |
| | | function rcmail_message_cache_gc() |
| | | { |
| | | global $DB, $CONFIG; |
| | | |
| | | // no cache lifetime configured |
| | | if (empty($CONFIG['message_cache_lifetime'])) |
| | | return; |
| | | |
| | | // get target timestamp |
| | | $ts = get_offset_time($CONFIG['message_cache_lifetime'], -1); |
| | | |
| | | $DB->query("DELETE FROM ".get_table_name('messages')." |
| | | WHERE created < ".$DB->fromunixtime($ts)); |
| | | } |
| | | |
| | | |
| | | // convert a string from one charset to another |
| | | // this function is not complete and not tested well |
| | |
| | | return $str; |
| | | |
| | | // convert charset using iconv module |
| | | if (0 && function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') { |
| | | if (function_exists('iconv') && $from!='UTF-7' && $to!='UTF-7') { |
| | | return iconv($from, $to, $str); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | /****** debugging function ********/ |
| | | |
| | | function rcube_timer() |
| | | { |
| | | list($usec, $sec) = explode(" ", microtime()); |
| | |
| | | } |
| | | |
| | | |
| | | // create a unix timestamp with a specified offset from now |
| | | function get_offset_time($offset_str, $factor=1) |
| | | { |
| | | if (preg_match('/^([0-9]+)\s*([smhdw])/i', $offset_str, $regs)) |
| | | { |
| | | $amount = (int)$regs[1]; |
| | | $unit = strtolower($regs[2]); |
| | | } |
| | | else |
| | | { |
| | | $amount = (int)$offset_str; |
| | | $unit = 's'; |
| | | } |
| | | |
| | | $ts = mktime(); |
| | | switch ($unit) |
| | | { |
| | | case 'w': |
| | | $amount *= 7; |
| | | case 'd': |
| | | $amount *= 24; |
| | | case 'h': |
| | | $amount *= 60; |
| | | case 'h': |
| | | $amount *= 60; |
| | | case 's': |
| | | $ts += $amount * $factor; |
| | | } |
| | | |
| | | return $ts; |
| | | } |
| | | |
| | | |
| | | ?> |
| | |
| | | $key); |
| | | |
| | | rcmail_clear_session_temp($key); |
| | | |
| | | return TRUE; |
| | | } |
| | | |
| | |
| | | foreach ($a_exp_sessions as $key) |
| | | rcmail_clear_session_temp($key); |
| | | |
| | | // also run message cache GC |
| | | rcmail_message_cache_gc(); |
| | | |
| | | return TRUE; |
| | | } |
| | | |