2010-05-24 60 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; 
} 
}