コード例 #1
0
 /**
  * Class constructor
  *
  * @param	array	$params	Configuration parameters
  * @return	void
  */
 public function __construct(&$params)
 {
     parent::__construct($params);
     if (empty($this->_config['save_path'])) {
         log_message('error', 'Session: No Memcached save path configured.');
     }
     if ($this->_config['match_ip'] === TRUE) {
         $this->_key_prefix .= $_SERVER['REMOTE_ADDR'] . ':';
     }
 }
コード例 #2
0
 /**
  * Class constructor
  *
  * @param	array	$params	Configuration parameters
  * @return	void
  */
 public function __construct(&$params)
 {
     parent::__construct($params);
     if (isset($this->_config['save_path'])) {
         $this->_config['save_path'] = rtrim($this->_config['save_path'], '/\\');
         ini_set('session.save_path', $this->_config['save_path']);
     } else {
         $this->_config['save_path'] = rtrim(ini_get('session.save_path'), '/\\');
     }
 }
コード例 #3
0
 /**
  * Class constructor
  *
  * @param	array	$params	Configuration parameters
  * @return	void
  */
 public function __construct(&$params)
 {
     parent::__construct($params);
     if (empty($this->_config['save_path'])) {
         log_message('error', 'Session: No Redis save path configured.');
     } elseif (preg_match('#(?:tcp://)?([^:?]+)(?:\\:(\\d+))?(\\?.+)?#', $this->_config['save_path'], $matches)) {
         isset($matches[3]) or $matches[3] = '';
         // Just to avoid undefined index notices below
         $this->_config['save_path'] = array('host' => $matches[1], 'port' => empty($matches[2]) ? NULL : $matches[2], 'password' => preg_match('#auth=([^\\s&]+)#', $matches[3], $match) ? $match[1] : NULL, 'database' => preg_match('#database=(\\d+)#', $matches[3], $match) ? (int) $match[1] : NULL, 'timeout' => preg_match('#timeout=(\\d+\\.\\d+)#', $matches[3], $match) ? (double) $match[1] : NULL);
         preg_match('#prefix=([^\\s&]+)#', $matches[3], $match) && ($this->_key_prefix = $match[1]);
     } else {
         log_message('error', 'Session: Invalid Redis save path format: ' . $this->_config['save_path']);
     }
     if ($this->_config['match_ip'] === TRUE) {
         $this->_key_prefix .= $_SERVER['REMOTE_ADDR'] . ':';
     }
 }
コード例 #4
0
 /**
  * Release lock
  *
  * Releases a previously acquired lock
  *
  * @return	bool
  */
 protected function _release_lock()
 {
     if (!$this->_lock) {
         return TRUE;
     }
     if ($this->_platform === 'mysql') {
         if ($this->_db->query("SELECT RELEASE_LOCK('" . $this->_lock . "') AS ci_session_lock")->row()->ci_session_lock) {
             $this->_lock = FALSE;
             return TRUE;
         }
         return FALSE;
     } elseif ($this->_platform === 'postgre') {
         if ($this->_db->simple_query('SELECT pg_advisory_unlock(' . $this->_lock . ')')) {
             $this->_lock = FALSE;
             return TRUE;
         }
         return FALSE;
     }
     return parent::_release_lock();
 }