禁用来宾的用户会话

时间:2010-05-24 14:39:12

标签: performance caching joomla session joomla1.5

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

我没有在前端使用用户系统,我认为不需要运行如下的查询:

网站将在重载下使用APC或Memcache作为缓存系统,因此对我来说非常重要。

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'

3 个答案:

答案 0 :(得分:4)

我可能找到了答案:

您可以在/index.php

中的行中添加第二个参数
/**
* CREATE THE APPLICATION
*
* NOTE :
*/
$mainframe =& JFactory::getApplication('site');

将此行更改为;

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

这将仅关闭前端的会话处理,你也可以将会话处理程序设置为缓存机制,如APC,Memcache。我更喜欢APC。

答案 1 :(得分:3)

我遇到了同样的问题,想要在前端禁用访客会话,但在后端保留会话。我发现谷歌和其他机器人提出了很多页面请求然后创建会话,我们的会话表太大了。

解决方案(不太好,但有效)

我替换了函数insert(libraries / joomla / database / table / 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;
 }
 }

答案 2 :(得分:-1)

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