summaryrefslogtreecommitdiffstats
path: root/system/libraries
diff options
context:
space:
mode:
authorChristopher Guiney <chris@guiney.net>2012-06-30 05:34:28 +0200
committerChristopher Guiney <chris@guiney.net>2012-06-30 05:34:28 +0200
commit7a14286feddcb14d3b49d2d7c83b776285946fb4 (patch)
tree649ad1f10e399f6dd561bd5fae6d1f377cfe531f /system/libraries
parent68b9b822b674e9f98025165a9391110a33f1b094 (diff)
Respect php.ini's values for calculating the probability of a session gc
Diffstat (limited to 'system/libraries')
-rw-r--r--system/libraries/Session.php13
1 files changed, 5 insertions, 8 deletions
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;