public static function start($lifetime = 0, $path = '/', $domain = NULL, $session_table = 'tbl_sessions') { if (!self::$_initialized) { if (!is_object(Symphony::Database()) || !Symphony::Database()->connected()) { return false; } self::$_session_table = $session_table; $cache = Cache::instance()->read('_session_config'); if (is_null($cache) || $cache === false) { self::create(); Cache::instance()->write('_session_config', true); } if (!session_id()) { ini_set('session.save_handler', 'user'); ini_set('session.gc_maxlifetime', $lifetime); ini_set('session.gc_probability', '1'); ini_set('session.gc_divisor', '3'); } session_set_save_handler(array('Session', 'open'), array('Session', 'close'), array('Session', 'read'), array('Session', 'write'), array('Session', 'destroy'), array('Session', 'gc')); session_set_cookie_params($lifetime, $path, $domain ? $domain : self::getDomain(), false, false); if (strlen(session_id()) == 0) { if (headers_sent()) { throw new Exception('Headers already sent. Cannot start session.'); } session_start(); } self::$_initialized = true; } return session_id(); }