fdestroy = false; session_start(); $_SESSION['PHPSESSID'] = $_COOKIE[self::session_name]; } public function end() { // 会触发write 和 close 函数 session_write_close(); foreach($_SESSION as $key=>$value) { unset($_SESSION[$key]); } foreach($_COOKIE as $key=>$value) { unset($_COOKIE[$key]); } foreach($_POST as $key => $value) { unset($_POST[$key]); } foreach($_GET as $key => $value) { unset($_GET[$key]); } request_helper::clear_server(); $this->sessid = ''; } public function destroy() { $this->fdestroy = true; //session_destroy();//会触发destroy 和 close 函数 } public function onOpen() { return true; } public function onRead($rsid) { $sid = $_COOKIE[self::session_name]; if(empty($sid)) { $ret = session_regenerate_id(false); if($ret == true) { $sid = session_id(); $this->expire_time = time() + self::expire_min * 60; fcgi_setcookie("PHPSESSID","{$sid}",$this->expire_time); $_COOKIE[self::session_name] = $sid; $this->sessid = $sid; } else { Log::record("session_regenerate_id error.",Log::ERR); } return ''; } else { $data = rcache($sid,self::prefix,self::session_name); if(empty($data)) { dcache($sid,self::prefix); $ret = session_regenerate_id(false); if($ret == true) { $sid = session_id(); $this->expire_time = time() + self::expire_min * 60; fcgi_setcookie("PHPSESSID","{$sid}",$this->expire_time); $this->sessid = $sid; $_COOKIE[self::session_name] = $sid; } else { Log::record("session_regenerate_id error.",Log::ERR); } return ''; } else { $this->sessid = $sid; return $data[self::session_name]; } } } public function onClose() { return true; } public function onWrite($sid, $data) { if($this->fdestroy) { dcache($this->sessid,self::prefix); } else { wcache($this->sessid,array(self::session_name => $data),self::prefix,self::expire_min); } return true; } public function onDestroy($sid) { return dcache($this->sessid,self::prefix); } public function onGc($expire) { return true; } }