/** * Обновление данных сессии * Важный момент: сессию обновляем в кеше и раз в 10 минут скидываем в БД */ protected function UpdateSession() { $this->oSession->setDateLast(date("Y-m-d H:i:s")); $this->oSession->setIpLast(func_getIp()); if (false === ($data = $this->Cache_Get("user_session_{$this->oSession->getUserId()}"))) { $data = array('time' => time(), 'session' => $this->oSession); } else { $data['session'] = $this->oSession; } if (!Config::Get('sys.cache.use') or $data['time'] < time() - 60 * 10) { $data['time'] = time(); $this->oMapper->UpdateSession($this->oSession); $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array('user_session_update')); } $this->Cache_Set($data, "user_session_{$this->oSession->getUserId()}", array(), 60 * 60 * 24 * 4); }
/** * Обновление данных сессии * Важный момент: сессию обновляем в кеше и раз в 10 минут скидываем в БД */ protected function UpdateSession() { $this->oSession->setDateLast(F::Now()); $this->oSession->setIpLast(F::GetUserIp()); $sCacheKey = "user_session_{$this->oSession->getUserId()}"; // Используем кеширование по запросу if (false === ($data = E::ModuleCache()->Get($sCacheKey, true))) { $data = array('time' => time(), 'session' => $this->oSession); } else { $data['session'] = $this->oSession; } if ($data['time'] <= time()) { $data['time'] = time() + 600; $this->oMapper->UpdateSession($this->oSession); } E::ModuleCache()->Set($data, $sCacheKey, array('user_session_update'), 'PT20M', true); }
/** * Обновление данных сессии * * @param ModuleUser_EntitySession $oSession * * @return int|bool */ public function UpdateSession(ModuleUser_EntitySession $oSession) { $sql = "UPDATE ?_session\n\t\t\tSET\n\t\t\t\tsession_ip_last = ? ,\n\t\t\t\tsession_date_last = ? ,\n\t\t\t\tsession_exit = ?\n\t\t\tWHERE session_key = ?\n\t\t"; $bResult = $this->oDb->query($sql, $oSession->getIpLast(), $oSession->getDateLast(), $oSession->getDateExit(), $oSession->getKey()); return $bResult !== false; }
/** * Обновление данных сессии * * @param ModuleUser_EntitySession $oSession * @return int|bool */ public function UpdateSession(ModuleUser_EntitySession $oSession) { $sql = "UPDATE " . Config::Get('db.table.session') . "\n SET\n session_ip_last = ? ,\n session_date_last = ?\n WHERE user_id = ?\n "; return $this->oDb->query($sql, $oSession->getIpLast(), $oSession->getDateLast(), $oSession->getUserId()); }
/** * Удаление сессии * * @param ModuleUser_EntitySession $oSession * @return int|bool */ public function DeleteSession(ModuleUser_EntitySession $oSession) { $sql = "DELETE FROM " . Config::Get('db.table.session') . "\n\t\t\tWHERE session_key = ?\n\t\t"; $res = $this->oDb->query($sql, $oSession->getKey()); return $this->IsSuccessful($res); }