Ejemplo n.º 1
0
 /**
  * Создание пользовательской сессии
  *
  * @param ModuleUser_EntitySession $oSession
  *
  * @return bool
  */
 public function CreateSession(ModuleUser_EntitySession $oSession)
 {
     $sql = "SELECT session_key FROM ?_session WHERE session_key=? LIMIT 1";
     if ($this->oDb->select($sql, $oSession->getKey())) {
         $sql = "UPDATE ?_session\n                    SET\n                        user_id = ?d:user_id ,\n                        session_ip_create = ?:ip_create ,\n                        session_ip_last = ?:ip_last ,\n                        session_date_create = ?:date_create ,\n                        session_date_last = ?:date_last ,\n                        session_agent_hash = ?:agent_hash\n                    WHERE\n                        session_key = ?:key\n            ";
     } else {
         $sql = "INSERT INTO ?_session\n                    (\n                        session_key,\n                        user_id,\n                        session_ip_create,\n                        session_ip_last,\n                        session_date_create,\n                        session_date_last,\n                        session_agent_hash\n                    )\n                    VALUES (\n                        ?:key ,\n                        ?d:user_id ,\n                        ?:ip_create ,\n                        ?:ip_last ,\n                        ?:date_create ,\n                        ?:date_last ,\n                        ?:agent_hash\n                    )\n            ";
     }
     $bResult = $this->oDb->sqlQuery($sql, array(':key' => $oSession->getKey(), ':user_id' => $oSession->getUserId(), ':ip_create' => $oSession->getIpCreate(), ':ip_last' => $oSession->getIpLast(), ':date_create' => $oSession->getDateCreate(), ':date_last' => $oSession->getDateLast(), ':agent_hash' => $oSession->getUserAgentHash()));
     return $bResult !== false;
 }
Ejemplo n.º 2
0
 /**
  * Обновление данных сессии
  * Важный момент: сессию обновляем в кеше и раз в 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);
 }
Ejemplo n.º 3
0
 /**
  * Обновление данных сессии
  * Важный момент: сессию обновляем в кеше и раз в 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 " . 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());
 }
Ejemplo n.º 5
0
 /**
  * Создание пользовательской сессии
  *
  * @param ModuleUser_EntitySession $oSession
  * @return bool
  */
 public function CreateSession(ModuleUser_EntitySession $oSession)
 {
     $sql = "REPLACE INTO " . Config::Get('db.table.session') . "\n\t\t\tSET\n\t\t\t\tsession_key = ? ,\n\t\t\t\tuser_id = ? ,\n\t\t\t\tsession_ip_create = ? ,\n\t\t\t\tsession_ip_last = ? ,\n\t\t\t\tsession_date_create = ? ,\n\t\t\t\tsession_date_last = ? ,\n\t\t\t\tsession_extra = ?\n\t\t";
     return $this->oDb->query($sql, $oSession->getKey(), $oSession->getUserId(), $oSession->getIpCreate(), $oSession->getIpLast(), $oSession->getDateCreate(), $oSession->getDateLast(), $oSession->getExtra());
 }