|
Server IP : 10.2.73.233 / Your IP : 216.73.216.59 Web Server : Apache/2.4.59 (Debian) System : Linux polon 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64 User : www-data ( 33) PHP Version : 5.6.40-64+0~20230107.71+debian10~1.gbp673146 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/ifk/web.back/framework/Web/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* TCacheHttpSession class
*
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @link http://www.pradosoft.com/
* @copyright Copyright © 2005-2014 PradoSoft
* @license http://www.pradosoft.com/license/
* @package System.Web
* @since 3.1.1
*/
/**
* TCacheHttpSession class
*
* TCacheHttpSession provides access for storing session data using a cache module (e.g. TMemCache, TDbCache).
* To specify the cache module for data storage, set the {@link setCacheModuleID CacheModuleID} property
* which should refer to a valid cache module configured in the application configuration.
*
* The following example shows how we configure TCacheHttpSession:
* <code>
* <modules>
* <module id="cache" class="System.Caching.TMemCache" Host="localhost" Port="11211" />
* <module id="session" class="System.Web.TCacheHttpSession"
* CacheModuleID="cache" SessionName="SSID"
* CookieMode="Allow" AutoStart="true" GCProbability="1"
* UseTransparentSessionID="true" TimeOut="3600" />
* </modules>
* </code>
*
* Beware, by definition cache storage are volatile, which means the data stored on them
* may be swapped out and get lost. This may not be the case for certain cache storage,
* such as database. So make sure you manage your cache properly to avoid loss of session data.
*
* @author Carl G. Mathisen <carlgmathisen@gmail.com>
* @author Qiang Xue <qiang.xue@gmail.com>
* @package System.Web
* @since 3.1.1
*/
class TCacheHttpSession extends THttpSession
{
private $_prefix='session';
private $_cacheModuleID='';
private $_cache;
/**
* Initializes the module.
* This method is required by IModule.
* It reads the CacheModule property.
* @param TXmlElement module configuration
*/
public function init($config)
{
if($this->_cacheModuleID==='')
throw new TConfigurationException('cachesession_cachemoduleid_required');
else if(($cache=$this->getApplication()->getModule($this->_cacheModuleID))===null)
throw new TConfigurationException('cachesession_cachemodule_inexistent',$this->_cacheModuleID);
else if($cache instanceof ICache)
$this->_cache=$cache;
else
throw new TConfigurationException('cachesession_cachemodule_invalid',$this->_cacheModuleID);
$this->setUseCustomStorage(true);
parent::init($config);
}
/**
* @return string the ID of the cache module.
*/
public function getCacheModuleID()
{
return $this->_cacheModuleID;
}
/**
* @param string the ID of the cache module.
*/
public function setCacheModuleID($value)
{
$this->_cacheModuleID=$value;
}
/**
* @return ICache the cache module being used for data storage
*/
public function getCache()
{
return $this->_cache;
}
/**
* Session read handler.
* @param string session ID
* @return string the session data
*/
public function _read($id)
{
return $this->_cache->get($this->calculateKey($id));
}
/**
* Session write handler.
* @param string session ID
* @param string session data
* @return boolean whether session write is successful
*/
public function _write($id,$data)
{
return $this->_cache->set($this->calculateKey($id),$data,$this->getTimeout());
}
/**
* Session destroy handler.
* This method should be overriden if {@link setUseCustomStorage UseCustomStorage} is set true.
* @param string session ID
* @return boolean whether session is destroyed successfully
*/
public function _destroy($id)
{
return $this->_cache->delete($this->calculateKey($id));
}
/**
* @return string prefix of session variable name to avoid conflict with other cache data. Defaults to 'session'.
*/
public function getKeyPrefix()
{
return $this->_prefix;
}
/**
* @param string prefix of session variable name to avoid conflict with other cache data
*/
public function setKeyPrefix($value)
{
$this->_prefix=$value;
}
/**
* @param string session variable name
* @return string a safe cache key associated with the session variable name
*/
protected function calculateKey($id)
{
return $this->_prefix.':'.$id;
}
}