public static function startSessionWithParams($sessionName = '', $sessionDomain = '', $sessionId = '', $sessionType = 'file', $options = array()) { // Zc::dump($sessionName); // Zc::dump($sessionDomain); // Zc::dump($sessionId); // Zc::dump($sessionType); // Zc::dump($options); self::$log = Zc::getLog('session/manager.log'); if (!empty($sessionName)) { session_name($sessionName); } session_set_cookie_params(0, '/', !empty($sessionDomain) ? $sessionDomain : ''); if (!empty($sessionId)) { session_id($sessionId); } if ($sessionType === 'memcached' || $sessionType == 'db') { $handlerClassName = 'Zc' . ucfirst($sessionType) . 'SessionHandler'; self::$sessionHander = new $handlerClassName($options); session_set_save_handler(array(self::$sessionHander, 'open'), array(self::$sessionHander, 'close'), array(self::$sessionHander, 'read'), array(self::$sessionHander, 'write'), array(self::$sessionHander, 'destroy'), array(self::$sessionHander, 'gc')); register_shutdown_function('session_write_close'); } elseif ($sessionType === 'file') { if (!empty($options['session_save_path'])) { session_save_path($options['session_save_path']); } } else { throw new Exception("do not support session type {$sessionType}"); } $ret = session_start(); if (!$ret) { self::$log->monitor("{$sessionType} session start failed"); } self::$isStart = $ret; if (!isset($_SESSION['securityToken'])) { $_SESSION['securityToken'] = md5(uniqid(rand(), true)); } }
/** * 把启动Session作为一个方法暴露出来,这样可以利用整个Zc框架的类自动加载机制,同时也可以作为一个Zc类的一个普通static方法暴露出来使用 * * @param unknown_type $sessionName * @param unknown_type $sessionDomain * @param unknown_type $sessionId * @param unknown_type $sessionType * @param unknown_type $options */ public static function startSessionWithParams($sessionName = '', $sessionDomain = '', $sessionId = '', $sessionType = 'file', $options) { self::initZcFrameworkAutoloader(); ZcSession::startSessionWithParams($sessionName, $sessionDomain, $sessionId, $sessionType, $options); }