Added message cache garbage collector

release-0.6
thomascube 19 years ago
parent fd80c1eed8
commit cc95700b58

@ -22,6 +22,10 @@ $rcmail_config['debug_level'] = 5;
// 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

@ -697,6 +697,22 @@ function rcmail_clear_session_temp($sess_id)
}
// 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
@ -709,7 +725,7 @@ function rcube_charset_convert($str, $from, $to=NULL)
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);
}
@ -1506,6 +1522,8 @@ function rcmail_charset_selector($attrib)
}
/****** debugging function ********/
function rcube_timer()
{
list($usec, $sec) = explode(" ", microtime());

@ -1353,4 +1353,37 @@ function clear_directory($dir_path)
}
// 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;
}
?>

@ -106,7 +106,6 @@ function sess_destroy($key)
$key);
rcmail_clear_session_temp($key);
return TRUE;
}
@ -142,6 +141,9 @@ function sess_gc($maxlifetime)
foreach ($a_exp_sessions as $key)
rcmail_clear_session_temp($key);
// also run message cache GC
rcmail_message_cache_gc();
return TRUE;
}

Loading…
Cancel
Save