From 7a14286feddcb14d3b49d2d7c83b776285946fb4 Mon Sep 17 00:00:00 2001 From: Christopher Guiney Date: Fri, 29 Jun 2012 20:34:28 -0700 Subject: Respect php.ini's values for calculating the probability of a session gc --- application/config/config.php | 2 -- system/libraries/Session.php | 13 +++++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/application/config/config.php b/application/config/config.php index e3f87eb42..726e3a71c 100644 --- a/application/config/config.php +++ b/application/config/config.php @@ -276,7 +276,6 @@ $config['encryption_key'] = ''; | 'sess_match_ip' = Whether to match the user's IP address when reading the session data | 'sess_match_useragent' = Whether to match the User Agent when reading the session data | 'sess_time_to_update' = how many seconds between CI refreshing Session Information -| 'gc_probability' = percent chance that stale sessions to be deleted | */ $config['sess_cookie_name'] = 'ci_session'; @@ -288,7 +287,6 @@ $config['sess_table_name'] = 'ci_sessions'; $config['sess_match_ip'] = FALSE; $config['sess_match_useragent'] = TRUE; $config['sess_time_to_update'] = 300; -$config['gc_probability'] = 5; /* |-------------------------------------------------------------------------- diff --git a/system/libraries/Session.php b/system/libraries/Session.php index 4e5e256a1..af38dc366 100644 --- a/system/libraries/Session.php +++ b/system/libraries/Session.php @@ -155,12 +155,6 @@ class CI_Session { */ public $time_reference = 'local'; - /** - * Probablity level of garbage collection of old sessions - * - * @var int - */ - public $gc_probability = 5; /** * Session data @@ -201,7 +195,7 @@ class CI_Session { // Set all the session preferences, which can either be set // manually via the $params array above or via the config file - foreach (array('sess_encrypt_cookie', 'sess_use_database', 'sess_table_name', 'sess_expiration', 'sess_expire_on_close', 'sess_match_ip', 'sess_match_useragent', 'sess_cookie_name', 'cookie_path', 'cookie_domain', 'cookie_secure', 'cookie_httponly', 'sess_time_to_update', 'time_reference', 'cookie_prefix', 'encryption_key', 'gc_probability') as $key) + foreach (array('sess_encrypt_cookie', 'sess_use_database', 'sess_table_name', 'sess_expiration', 'sess_expire_on_close', 'sess_match_ip', 'sess_match_useragent', 'sess_cookie_name', 'cookie_path', 'cookie_domain', 'cookie_secure', 'cookie_httponly', 'sess_time_to_update', 'time_reference', 'cookie_prefix', 'encryption_key') as $key) { $this->$key = isset($params[$key]) ? $params[$key] : $this->CI->config->item($key); } @@ -940,8 +934,11 @@ class CI_Session { return; } + $probability = ini_get('session.gc_probability'); + $divisor = ini_get('session.gc_divisor'); + srand(time()); - if ((rand() % 100) < $this->gc_probability) + if ((mt_rand(0, $divisor) / $divisor) < $probability) { $expire = $this->now - $this->sess_expiration; -- cgit v1.2.3-24-g4f1b