Ответ 1
Здесь соответствующий исходный код класса Session:
/**
* Garbage collection
*
* This deletes expired session rows from database
* if the probability percentage is met
*
* @access public
* @return void
*/
function _sess_gc()
{
if ($this->sess_use_database != TRUE)
{
return;
}
srand(time());
if ((rand() % 100) < $this->gc_probability)
{
$expire = $this->now - $this->sess_expiration;
$this->CI->db->where("last_activity < {$expire}");
$this->CI->db->delete($this->sess_table_name);
log_message('debug', 'Session garbage collection performed.');
}
}
Эта функция вызывается в одном месте, в конструкторе класса Session (почти последняя строка), поэтому один раз для запроса при обычных обстоятельствах.
$this->gc_probability
жестко закодирован до 5
в верхней части класса, и, похоже, его невозможно изменить. Я не уверен, но я считаю, что это означает, что в 5% случаев (случайно) будет запущена сборка мусора, очищая старые записи из таблицы сеансов DB.
Обратите внимание, что эти старые записи не имеют никакого значения или вреда, очистка выполняется только так, чтобы ваша таблица базы данных не перегружалась старыми, бесполезными записями.