/** * session初始化 * @param array $config * @return void * @throws \think\Exception */ public static function init(array $config = []) { if (empty($config)) { $config = Config::get('session'); } // 记录初始化信息 App::$debug && Log::record('[ SESSION ] INIT ' . var_export($config, true), 'info'); $isDoStart = false; if (isset($config['use_trans_sid'])) { ini_set('session.use_trans_sid', $config['use_trans_sid'] ? 1 : 0); } // 启动session if (!empty($config['auto_start']) && PHP_SESSION_ACTIVE != session_status()) { ini_set('session.auto_start', 0); $isDoStart = true; } if (isset($config['prefix'])) { self::$prefix = $config['prefix']; } if (isset($config['var_session_id']) && isset($_REQUEST[$config['var_session_id']])) { session_id($_REQUEST[$config['var_session_id']]); } elseif (isset($config['id']) && !empty($config['id'])) { session_id($config['id']); } if (isset($config['name'])) { session_name($config['name']); } if (isset($config['path'])) { session_save_path($config['path']); } if (isset($config['domain'])) { ini_set('session.cookie_domain', $config['domain']); } if (isset($config['expire'])) { ini_set('session.gc_maxlifetime', $config['expire']); ini_set('session.cookie_lifetime', $config['expire']); } if (isset($config['use_cookies'])) { ini_set('session.use_cookies', $config['use_cookies'] ? 1 : 0); } if (isset($config['cache_limiter'])) { session_cache_limiter($config['cache_limiter']); } if (isset($config['cache_expire'])) { session_cache_expire($config['cache_expire']); } if (!empty($config['type'])) { // 读取session驱动 $class = false !== strpos($config['type'], '\\') ? $config['type'] : '\\think\\session\\driver\\' . ucwords($config['type']); // 检查驱动类 if (!class_exists($class) || !session_set_save_handler(new $class($config))) { throw new ClassNotFoundException('error session handler:' . $class, $class); } } if ($isDoStart) { session_start(); } }
/** * session初始化 * * @param array $config * @return void */ public static function init(array $config = []) { $isDoStart = false; if (isset($config['use_trans_sid'])) { ini_set('session.use_trans_sid', $config['use_trans_sid'] ? 1 : 0); } // 启动session if (!empty($config['auto_start']) && PHP_SESSION_ACTIVE != session_status()) { ini_set('session.auto_start', 0); $isDoStart = true; } if (isset($config['prefix'])) { self::$prefix = $config['prefix']; } if ($config['var_session_id'] && isset($_REQUEST[$config['var_session_id']])) { session_id($_REQUEST[$config['var_session_id']]); } elseif (isset($config['id']) && !empty($config['id'])) { session_id($config['id']); } if (isset($config['name'])) { session_name($config['name']); } if (isset($config['path'])) { session_save_path($config['path']); } if (isset($config['domain'])) { ini_set('session.cookie_domain', $config['domain']); } if (isset($config['expire'])) { ini_set('session.gc_maxlifetime', $config['expire']); ini_set('session.cookie_lifetime', $config['expire']); } if (isset($config['use_cookies'])) { ini_set('session.use_cookies', $config['use_cookies'] ? 1 : 0); } if (isset($config['cache_limiter'])) { session_cache_limiter($config['cache_limiter']); } if (isset($config['cache_expire'])) { session_cache_expire($config['cache_expire']); } if (!empty($config['type'])) { // 读取session驱动 $class = (!empty($config['namespace']) ? $config['namespace'] : '\\think\\session\\driver\\') . ucwords($config['type']); // 检查驱动类 if (!class_exists($class) || !session_set_save_handler(new $class($conifg))) { throw new \think\Exception('error session handler', 11700); } } if ($isDoStart) { session_start(); } }
/** * session初始化 * @param array $config * @return void */ public static function init($config = []) { if (isset($config['prefix'])) { self::$prefix = $config['prefix']; } if (isset($config['id']) && !empty($config['id'])) { session_id($config['id']); } if (isset($config['name'])) { session_name($config['name']); } if (isset($config['path'])) { session_save_path($config['path']); } if (isset($config['domain'])) { ini_set('session.cookie_domain', $config['domain']); } if (isset($config['expire'])) { ini_set('session.gc_maxlifetime', $config['expire']); ini_set('session.cookie_lifetime', $config['expire']); } if (isset($config['use_trans_sid'])) { ini_set('session.use_trans_sid', $config['use_trans_sid'] ? 1 : 0); } if (isset($config['use_cookies'])) { ini_set('session.use_cookies', $config['use_cookies'] ? 1 : 0); } if (isset($config['cache_limiter'])) { session_cache_limiter($config['cache_limiter']); } if (isset($config['cache_expire'])) { session_cache_expire($config['cache_expire']); } if (!empty($config['type'])) { // 读取session驱动 $class = (!empty($config['namespace']) ? $config['namespace'] : '\\think\\session\\driver\\') . strtolower($config['type']); // 检查驱动类 if (!session_set_save_handler(new $class())) { throw new Exception('error session handler', 11700); } } // 启动session if (!empty($config['auto_start'])) { ini_set('session.auto_start', 0); session_start(); } }
/** * 启动session * @return void */ public static function start() { session_start(); self::$active = true; }
/** * 暂停session * @return void */ public static function pause() { // 暂停session session_write_close(); self::$init = false; }