diff --git a/include/class.ostsession.php b/include/class.ostsession.php
index 4c34fda98553e28907cab45577e0189179780a26..94df679d2792046fda2b7373e598851f147a501b 100644
--- a/include/class.ostsession.php
+++ b/include/class.ostsession.php
@@ -22,9 +22,7 @@ class osTicketSession {
     var $id = '';
 
     function osTicketSession($ttl=0){
-        $this->ttl =$ttl?$ttl:get_cfg_var('session.gc_maxlifetime');
-        if(!$this->ttl)
-            $this->ttl=SESSION_TTL;
+        $this->ttl = $ttl ?: ini_get('session.gc_maxlifetime') ?: SESSION_TTL;
 
         // Set osTicket specific session name.
         session_name('OSTSESSID');
@@ -32,6 +30,9 @@ class osTicketSession {
         // Forced cleanup on shutdown
         register_shutdown_function('session_write_close');
 
+        // Set session cleanup time to match TTL
+        ini_set('session.gc_maxlifetime', $ttl);
+
         if (OsticketConfig::getDBVersion())
             return session_start();
 
@@ -45,7 +46,7 @@ class osTicketSession {
             // Remote port specification, as it will make an invalid domain
             list($domain) = explode(':', $_SERVER['HTTP_HOST']);
 
-        session_set_cookie_params(86400, ROOT_PATH, $domain,
+        session_set_cookie_params($ttl, ROOT_PATH, $domain,
             osTicket::is_https());
 
         //Set handlers.