2010-05-24 64 views
5

是否可以在客人中禁用Joomla 1.5中的会话处理?为客人禁用用户会话

我没有在前端使用用户系统,我认为它并不需要像下面运行查询:

网站将使用APC或内存缓存的缓存系统重负载下,所以这对我来说很重要。

DELETE FROM jos_session WHERE (time < '1274709357') 

SELECT * FROM jos_session WHERE session_id = '70c247cde8dcc4dad1ce111991772475' 

UPDATE `jos_session` SET `time`='1274710257',`userid`='0',`usertype`='',`username`='',`gid`='0',`guest`='1',`client_id`='0',`data`='__default|a:8:{s:15:\"session.counter\";i:5;s:19:\"session.timer.start\";i:1274709740;s:18:\"session.timer.last\";i:1274709749;s:17:\"session.timer.now\";i:1274709754;s:22:\"session.client.browser\";s:88:\"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3\";s:8:\"registry\";O:9:\"JRegistry\":3:{s:17:\"_defaultNameSpace\";s:7:\"session\";s:9:\"_registry\";a:1:{s:7:\"session\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:4:\"user\";O:5:\"JUser\":19:{s:2:\"id\";i:0;s:4:\"name\";N;s:8:\"username\";N;s:5:\"email\";N;s:8:\"password\";N;s:14:\"password_clear\";s:0:\"\";s:8:\"usertype\";N;s:5:\"block\";N;s:9:\"sendEmail\";i:0;s:3:\"gid\";i:0;s:12:\"registerDate\";N;s:13:\"lastvisitDate\";N;s:10:\"activation\";N;s:6:\"params\";N;s:3:\"aid\";i:0;s:5:\"guest\";i:1;s:7:\"_params\";O:10:\"JParameter\":7:{s:4:\"_raw\";s:0:\"\";s:4:\"_xml\";N;s:9:\"_elements\";a:0:{}s:12:\"_elementPath\";a:1:{i:0;s:74:\"C:\\xampp\\htdocs\\sites\\iv.mynet.com\\libraries\\joomla\\html\\parameter\\element\";}s:17:\"_defaultNameSpace\";s:8:\"_default\";s:9:\"_registry\";a:1:{s:8:\"_default\";a:1:{s:4:\"data\";O:8:\"stdClass\":0:{}}}s:7:\"_errors\";a:0:{}}s:9:\"_errorMsg\";N;s:7:\"_errors\";a:0:{}}s:13:\"session.token\";s:32:\"a2b19c7baf223ad5fd2d5503e18ed323\";}' 

    WHERE session_id='70c247cde8dcc4dad1ce111991772475' 

回答

4

我可能发现了答案:

您可以在/index.php中的行中添加第二个参数

/** 
* CREATE THE APPLICATION 
* 
* NOTE : 
*/ 
$mainframe =& JFactory::getApplication('site'); 

将此行更改为;

$mainframe =& JFactory::getApplication('site',array('session'=>false)); 

这将关闭会话只在前端处理,也可以设置会话处理器的缓存机制像APC,Memcache.I喜欢APC。

-1

默认情况下,Joomla跟踪jos_session表中的会话数据,正如我看到你已经想出的那样。但是,您可以通过转到管理面板 - 全局配置 - 系统 - 会话设置轻松禁用此功能,并将会话处理程序从“数据库”更改为“无”。

+0

即使我从后端将会话处理程序设置为“无”,Joomla仍然运行下面的查询,这些查询可以从调试中看到。 # DELETE FROM jos_session WHERE(时间< '1274767797') # SELECT * FROM jos_session WHERE SESSION_ID = '48f542307364b096e85db0b8453bff54' # UPDATE'jos_session' SET'time' = '1274768697' ,'userid' ='0','usertype' ='','username' ='','gid' ='0','guest' ='1','client_id' ='0' WHERE session_id = '48f542307364b096e85db0b8453bff54' – WebolizeR 2010-05-25 06:27:39

3

我有这个相同的问题,并希望在前端禁用访客会话,但保留会话在后端。以及我发现谷歌和其他机器人提出了大量的页面请求,然后创建会话,我们的会话表变得太大了。

解决方案(不是很好,但工程)

我更换功能插件(库/的Joomla /数据库/表/ session.php文件)

function insert($sessionId, $clientId) { 

$url = 'http://'.$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]; 

$this->session_id = $sessionId; 

$this->client_id = $clientId; 

$this->time = time(); 

if ($this->guest!=1 || stristr($url,'/administrator')) 
     $ret = $this->_db->insertObject($this->_tbl, $this, 'session_id'); 

if(!$ret && $this->guest!=1) { 
     $this->setError(strtolower(get_class($this))."::". JText::_('store failed') ."<br />" . $this->_db->stderr()); 
     return false; 
} 
else { 
     return true; 
} 
}