fix #385 object cache 정리 및 오류가 발생할 수 는 문제 해결

This commit is contained in:
bnu 2014-01-29 14:30:32 +09:00
parent 58e141c48a
commit d48d9d80a7
14 changed files with 175 additions and 167 deletions

View file

@ -8,6 +8,8 @@
* */ * */
class CacheApc extends CacheBase class CacheApc extends CacheBase
{ {
public static $isSupport = false;
/** /**
* Get instance of CacheApc * Get instance of CacheApc
* *
@ -30,7 +32,6 @@ class CacheApc extends CacheBase
*/ */
function CacheApc() function CacheApc()
{ {
} }
/** /**
@ -40,7 +41,7 @@ class CacheApc extends CacheBase
*/ */
function isSupport() function isSupport()
{ {
return function_exists('apc_add'); return self::$isSupport;
} }
/** /**
@ -148,6 +149,10 @@ class CacheApc extends CacheBase
return apc_clear_cache('user'); return apc_clear_cache('user');
} }
} }
CacheApc::$isSupport = function_exists('apc_add');
/* End of file CacheApc.class.php */ /* End of file CacheApc.class.php */
/* Location: ./classes/cache/CacheApc.class.php */ /* Location: ./classes/cache/CacheApc.class.php */

View file

@ -6,7 +6,7 @@
* *
* Filedisk Cache Handler * Filedisk Cache Handler
* *
* @author Arnia Software (xe_dev@arnia.ro) * @author NAVER (developers@xpressengine.com)
*/ */
class CacheFile extends CacheBase class CacheFile extends CacheBase
{ {
@ -90,8 +90,15 @@ class CacheFile extends CacheBase
function isValid($key, $modified_time = 0) function isValid($key, $modified_time = 0)
{ {
$cache_file = $this->getCacheFileName($key); $cache_file = $this->getCacheFileName($key);
if(file_exists($cache_file)) if(file_exists($cache_file))
{ {
if($modified_time > 0 && filemtime($cache_file) < $modified_timed)
{
FileHandler::removeFile($cache_file);
return false;
}
return true; return true;
} }
@ -107,15 +114,19 @@ class CacheFile extends CacheBase
*/ */
function get($key, $modified_time = 0) function get($key, $modified_time = 0)
{ {
$cache_file = FileHandler::exists($this->getCacheFileName($key)); if(!$cache_file = FileHandler::exists($this->getCacheFileName($key)))
if($cache_file) $content = include($cache_file);
if(!$content)
{ {
return false; return false;
} }
if($modified_time > 0 && filemtime($cache_file) < $modified_timed)
{
FileHandler::removeFile($cache_file);
return false;
}
$content = include($cache_file);
return unserialize(stripslashes($content)); return unserialize(stripslashes($content));
} }

View file

@ -56,10 +56,11 @@ class CacheMemcache extends CacheBase
*/ */
function isSupport() function isSupport()
{ {
if($GLOBALS['XE_MEMCACHE_SUPPORT']) if(isset($GLOBALS['XE_MEMCACHE_SUPPORT']))
{ {
return true; return true;
} }
if($this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1)) if($this->Memcache->set('xe', 'xe', MEMCACHE_COMPRESSED, 1))
{ {
$GLOBALS['XE_MEMCACHE_SUPPORT'] = true; $GLOBALS['XE_MEMCACHE_SUPPORT'] = true;
@ -68,6 +69,7 @@ class CacheMemcache extends CacheBase
{ {
$GLOBALS['XE_MEMCACHE_SUPPORT'] = false; $GLOBALS['XE_MEMCACHE_SUPPORT'] = false;
} }
return $GLOBALS['XE_MEMCACHE_SUPPORT']; return $GLOBALS['XE_MEMCACHE_SUPPORT'];
} }

View file

@ -10,6 +10,8 @@
*/ */
class CacheWincache extends CacheBase class CacheWincache extends CacheBase
{ {
public static $isSupport = false;
/** /**
* Get instance of CacheWincache * Get instance of CacheWincache
* *
@ -32,7 +34,6 @@ class CacheWincache extends CacheBase
*/ */
function CacheWincache() function CacheWincache()
{ {
} }
/** /**
@ -42,7 +43,7 @@ class CacheWincache extends CacheBase
*/ */
function isSupport() function isSupport()
{ {
return function_exists('wincache_ucache_set'); return self::$isSupport;
} }
/** /**
@ -150,7 +151,8 @@ class CacheWincache extends CacheBase
{ {
return wincache_ucache_clear(); return wincache_ucache_clear();
} }
} }
CacheWincache::$isSupport = function_exists('wincache_ucache_set');
/* End of file CacheWincache.class.php */ /* End of file CacheWincache.class.php */
/* Location: ./classes/cache/CacheWincache.class.php */ /* Location: ./classes/cache/CacheWincache.class.php */

View file

@ -116,7 +116,7 @@ class TemplateHandler
*/ */
public function compile($tpl_path, $tpl_filename, $tpl_file = '') public function compile($tpl_path, $tpl_filename, $tpl_file = '')
{ {
$buff = ''; $buff = false;
// store the starting time for debug information // store the starting time for debug information
if(__DEBUG__ == 3) if(__DEBUG__ == 3)
@ -159,7 +159,7 @@ class TemplateHandler
} }
} }
if(!$buff) if($buff === FALSE)
{ {
$buff = $this->parse(); $buff = $this->parse();
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())

View file

@ -442,6 +442,7 @@ class commentModel extends comment
} }
// cache controll // cache controll
$output = false;
$oCacheHandler = CacheHandler::getInstance('object'); $oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -450,7 +451,7 @@ class commentModel extends comment
$output = $oCacheHandler->get($cache_key); $output = $oCacheHandler->get($cache_key);
} }
if(!$output) if($output === FALSE)
{ {
// get the number of comments on the document module // get the number of comments on the document module
$oDocumentModel = getModel('document'); $oDocumentModel = getModel('document');

View file

@ -8,7 +8,6 @@
*/ */
class counterModel extends counter class counterModel extends counter
{ {
/** /**
* Initialization * Initialization
* *
@ -16,7 +15,6 @@ class counterModel extends counter
*/ */
function init() function init()
{ {
} }
/** /**
@ -32,26 +30,27 @@ class counterModel extends counter
$args->ipaddress = $_SERVER['REMOTE_ADDR']; $args->ipaddress = $_SERVER['REMOTE_ADDR'];
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
$iplogged = false;
$oCacheHandler = CacheHandler::getInstance('object'); $oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$object_key = 'counter:' . $site_srl . '_' . str_replace(array('.', ':'), '-', $args->ipaddress); $object_key = 'counter:' . $site_srl . '_' . str_replace(array('.', ':'), '-', $args->ipaddress);
$cache_key = $oCacheHandler->getGroupKey('counterIpLogged_' . $args->regdate, $object_key); $cache_key = $oCacheHandler->getGroupKey('counterIpLogged_' . $args->regdate, $object_key);
if($oCacheHandler->isValid($cache_key)) $iplogged = $oCacheHandler->get($cache_key);
{
return $oCacheHandler->get($cache_key);
}
} }
if($iplogged === false)
{
$output = executeQuery('counter.getCounterLog', $args); $output = executeQuery('counter.getCounterLog', $args);
if($output->data->count) $iplogged = TRUE;
$result = $output->data->count ? TRUE : FALSE;
if($result && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, TRUE);
} }
return $result; if($iplogged && $oCacheHandler->isSupport())
{
$oCacheHandler->put($cache_key, $iplogged);
}
return $iplogged;
} }
/** /**
@ -65,16 +64,16 @@ class counterModel extends counter
$args = new stdClass; $args = new stdClass;
$args->regdate = date('Ymd'); $args->regdate = date('Ymd');
$insertedTodayStatus = false;
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE); $oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$cache_key = 'counter:insertedTodayStatus:' . $site_srl . '_' . $args->regdate; $cache_key = 'counter:insertedTodayStatus:' . $site_srl . '_' . $args->regdate;
if($oCacheHandler->isValid($cache_key)) $insertedTodayStatus = $oCacheHandler->get($cache_key);
{
return $oCacheHandler->get($cache_key);
}
} }
if($insertedTodayStatus === false)
{
if($site_srl) if($site_srl)
{ {
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
@ -85,15 +84,17 @@ class counterModel extends counter
$output = executeQuery('counter.getTodayStatus', $args); $output = executeQuery('counter.getTodayStatus', $args);
} }
$result = $output->data->count ? TRUE : FALSE; $insertedTodayStatus = !!$output->data->count;
if($result && $oCacheHandler->isSupport()) }
if($insertedTodayStatus && $oCacheHandler->isSupport())
{ {
$oCacheHandler->put($cache_key, TRUE); $oCacheHandler->put($cache_key, TRUE);
$_old_date = date('Ymd', strtotime('-1 day')); $_old_date = date('Ymd', strtotime('-1 day'));
$oCacheHandler->delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date); $oCacheHandler->delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date);
} }
return $result; return $insertedTodayStatus;
} }
/** /**

View file

@ -58,7 +58,8 @@ class documentItem extends Object
$this->document_srl = $document_srl; $this->document_srl = $document_srl;
$this->columnList = $columnList; $this->columnList = $columnList;
$this->_loadFromDB($load_extra_vars); $oDocumentModel = getModel('document');
if($load_extra_vars === true) $oDocumentModel->getDocumentExtraVarsFromDB($document_srl);
} }
function setDocument($document_srl, $load_extra_vars = true) function setDocument($document_srl, $load_extra_vars = true)
@ -76,13 +77,15 @@ class documentItem extends Object
{ {
if(!$this->document_srl) return; if(!$this->document_srl) return;
$document_item = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object'); $oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$cache_key = 'document_item:' . $this->document_srl; $cache_key = 'document_item:' . $this->document_srl;
$document_item = $oCacheHandler->get($cache_key); $document_item = $oCacheHandler->get($cache_key);
if($document_item)
if($document_item !== false)
{ {
$document_item = (object)$document_item->getVariables(); $document_item = (object)$document_item->getVariables();
$this->columnList = array('readed_count', 'voted_count', 'blamed_count', 'comment_count', 'trackback_count'); $this->columnList = array('readed_count', 'voted_count', 'blamed_count', 'comment_count', 'trackback_count');
@ -97,9 +100,10 @@ class documentItem extends Object
$args->document_srl = $this->document_srl; $args->document_srl = $this->document_srl;
$output = executeQuery('document.getDocument', $args, $this->columnList); $output = executeQuery('document.getDocument', $args, $this->columnList);
if(!$document_item) if($document_item === false)
{ {
$document_item = $output->data; if(!is_object($output->data)) $document_item = new stdClass;
else $document_item = $output->data;
} }
else else
{ {
@ -139,13 +143,13 @@ class documentItem extends Object
} }
$oDocumentModel = getModel('document'); $oDocumentModel = getModel('document');
$GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this;
if($load_extra_vars) if($load_extra_vars)
{ {
$oDocumentModel->setToAllDocumentExtraVars(); $oDocumentModel->getDocumentExtraVarsFromDB($this->document_srl);
$this->add('title', $GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl]->get('title')); $this->add('title', $this->get('title'));
$this->add('content', $GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl]->get('content')); $this->add('content', $this->get('content'));
} }
$GLOBALS['XE_DOCUMENT_LIST'][$this->document_srl] = $this;
} }
function isExists() function isExists()

View file

@ -361,8 +361,9 @@ class documentModel extends document
*/ */
function getExtraKeys($module_srl) function getExtraKeys($module_srl)
{ {
if(is_null($GLOBALS['XE_EXTRA_KEYS'][$module_srl])) if($GLOBALS['XE_EXTRA_KEYS'][$module_srl] === NULL)
{ {
$keys = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -371,8 +372,9 @@ class documentModel extends document
$keys = $oCacheHandler->get($cache_key); $keys = $oCacheHandler->get($cache_key);
} }
$oExtraVar = &ExtraVar::getInstance($module_srl); $oExtraVar = ExtraVar::getInstance($module_srl);
if(!$keys)
if($keys === false)
{ {
$obj = new stdClass(); $obj = new stdClass();
$obj->module_srl = $module_srl; $obj->module_srl = $module_srl;

View file

@ -258,6 +258,8 @@ class layoutModel extends layout
*/ */
function getLayout($layout_srl) function getLayout($layout_srl)
{ {
$layout_info = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -267,7 +269,7 @@ class layoutModel extends layout
$layout_info = $oCacheHandler->get($cache_key); $layout_info = $oCacheHandler->get($cache_key);
} }
if(!$layout_info) if($layout_info === false)
{ {
// Get information from the DB // Get information from the DB
$args = new stdClass(); $args = new stdClass();

View file

@ -295,6 +295,8 @@ class memberModel extends member
//columnList size zero... get full member info //columnList size zero... get full member info
if(!$GLOBALS['__member_info__'][$member_srl] || count($columnList) == 0) if(!$GLOBALS['__member_info__'][$member_srl] || count($columnList) == 0)
{ {
$GLOBALS['__member_info__'][$member_srl] = false;
$oCacheHandler = CacheHandler::getInstance('object'); $oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -304,7 +306,7 @@ class memberModel extends member
$GLOBALS['__member_info__'][$member_srl] = $oCacheHandler->get($cache_key); $GLOBALS['__member_info__'][$member_srl] = $oCacheHandler->get($cache_key);
} }
if(!$GLOBALS['__member_info__'][$member_srl]) if($GLOBALS['__member_info__'][$member_srl] === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->member_srl = $member_srl; $args->member_srl = $member_srl;
@ -458,7 +460,10 @@ class memberModel extends member
*/ */
function getMemberGroups($member_srl, $site_srl = 0, $force_reload = false) function getMemberGroups($member_srl, $site_srl = 0, $force_reload = false)
{ {
static $member_groups = array();
// cache controll // cache controll
$group_list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -467,11 +472,9 @@ class memberModel extends member
$group_list = $oCacheHandler->get($cache_key); $group_list = $oCacheHandler->get($cache_key);
} }
static $member_groups = array();
if(!$member_groups[$member_srl][$site_srl] || $force_reload) if(!$member_groups[$member_srl][$site_srl] || $force_reload)
{ {
if(!$group_list && !is_array($group_list)) if($group_list === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->member_srl = $member_srl; $args->member_srl = $member_srl;
@ -516,6 +519,7 @@ class memberModel extends member
*/ */
function getDefaultGroup($site_srl = 0, $columnList = array()) function getDefaultGroup($site_srl = 0, $columnList = array())
{ {
$default_group = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -525,7 +529,7 @@ class memberModel extends member
$default_group = $oCacheHandler->get($cache_key); $default_group = $oCacheHandler->get($cache_key);
} }
if(!$default_group) if($default_group === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
@ -574,6 +578,7 @@ class memberModel extends member
$site_srl = 0; $site_srl = 0;
} }
$group_list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -581,9 +586,9 @@ class memberModel extends member
$cache_key = $oCacheHandler->getGroupKey('member', $object_key); $cache_key = $oCacheHandler->getGroupKey('member', $object_key);
$group_list = $oCacheHandler->get($cache_key); $group_list = $oCacheHandler->get($cache_key);
} }
if(!$group_list)
{
if($group_list === false)
{
$args = new stdClass(); $args = new stdClass();
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
$args->sort_index = 'list_order'; $args->sort_index = 'list_order';

View file

@ -118,6 +118,7 @@ class moduleModel extends module
// If domain is set, look for subsite // If domain is set, look for subsite
if($domain !== '') if($domain !== '')
{ {
$site_info = false;
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$object_key = 'site_info:' . md5($domain); $object_key = 'site_info:' . md5($domain);
@ -125,12 +126,13 @@ class moduleModel extends module
$site_info = $oCacheHandler->get($domain_cache_key); $site_info = $oCacheHandler->get($domain_cache_key);
} }
if(!$site_info) if($site_info === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->domain = $domain; $args->domain = $domain;
$output = executeQuery('module.getSiteInfoByDomain', $args); $output = executeQuery('module.getSiteInfoByDomain', $args);
$site_info = $output->data; $site_info = $output->data;
if($oCacheHandler->isSupport()) $oCacheHandler->put($domain_cache_key, $site_info); if($oCacheHandler->isSupport()) $oCacheHandler->put($domain_cache_key, $site_info);
} }
@ -145,14 +147,15 @@ class moduleModel extends module
// If no virtual website was found, get default website // If no virtual website was found, get default website
if($domain === '') if($domain === '')
{ {
$site_info = false;
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$object_key = 'default_site'; $object_key = 'default_site';
$default_site_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key); $default_site_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$module_info = $oCacheHandler->get($default_site_cache_key); $site_info = $oCacheHandler->get($default_site_cache_key);
} }
if(!$site_info) if($site_info === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->site_srl = 0; $args->site_srl = 0;
@ -212,6 +215,10 @@ class moduleModel extends module
$args = new stdClass(); $args = new stdClass();
$args->mid = $mid; $args->mid = $mid;
$args->site_srl = (int)$site_srl; $args->site_srl = (int)$site_srl;
$module_srl = false;
$module_info = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -226,7 +233,7 @@ class moduleModel extends module
} }
} }
if(!$module_info && !is_array($module_info)) if($module_info === false)
{ {
$output = executeQuery('module.getMidInfo', $args); $output = executeQuery('module.getMidInfo', $args);
$module_info = $output->data; $module_info = $output->data;
@ -310,6 +317,9 @@ class moduleModel extends module
$moduleInfo->designSettings->skin->mobileIsDefault = $moduleInfo->is_mskin_fix == 'N' ? 1 : 0; $moduleInfo->designSettings->skin->mobileIsDefault = $moduleInfo->is_mskin_fix == 'N' ? 1 : 0;
$moduleInfo->designSettings->skin->mobile = $skinInfoMobile->title; $moduleInfo->designSettings->skin->mobile = $skinInfoMobile->title;
$module_srl = false;
$mid_info = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -320,10 +330,10 @@ class moduleModel extends module
{ {
$object_key = 'mid_info:' . $module_srl; $object_key = 'mid_info:' . $module_srl;
$module_info_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key); $module_info_cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$coutput = $oCacheHandler->get($module_info_cache_key); $mid_info = $oCacheHandler->get($module_info_cache_key);
} }
if(!$coutput) if($mid_info === false)
{ {
$oCacheHandler->put($module_srl_cache_key, $output->data->module_srl); $oCacheHandler->put($module_srl_cache_key, $output->data->module_srl);
@ -333,8 +343,8 @@ class moduleModel extends module
} }
else else
{ {
$coutput->designSettings = $moduleInfo->designSettings; $mid_info->designSettings = $moduleInfo->designSettings;
$moduleInfo = $coutput; $moduleInfo = $mid_info;
} }
} }
@ -356,9 +366,8 @@ class moduleModel extends module
*/ */
function getModuleInfoByModuleSrl($module_srl, $columnList = array()) function getModuleInfoByModuleSrl($module_srl, $columnList = array())
{ {
// Get data $mid_info = false;
$args = new stdClass();
$args->module_srl = $module_srl;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -367,8 +376,11 @@ class moduleModel extends module
$mid_info = $oCacheHandler->get($cache_key); $mid_info = $oCacheHandler->get($cache_key);
} }
if(!$mid_info && !is_array($mid_info)) if($mid_info === false)
{ {
// Get data
$args = new stdClass();
$args->module_srl = $module_srl;
$output = executeQuery('module.getMidInfo', $args); $output = executeQuery('module.getMidInfo', $args);
if(!$output->toBool()) return; if(!$output->toBool()) return;
@ -482,6 +494,7 @@ class moduleModel extends module
*/ */
function getMidList($args = null, $columnList = array()) function getMidList($args = null, $columnList = array())
{ {
$list = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -493,7 +506,7 @@ class moduleModel extends module
} }
} }
if(!$list) if($list === false)
{ {
if($oCacheHandler->isSupport() && count($args) === 1 && isset($args->site_srl)) if($oCacheHandler->isSupport() && count($args) === 1 && isset($args->site_srl))
{ {
@ -517,6 +530,7 @@ class moduleModel extends module
{ {
$mid_list[$val->mid] = $val; $mid_list[$val->mid] = $val;
} }
return $mid_list; return $mid_list;
} }
@ -567,6 +581,7 @@ class moduleModel extends module
*/ */
function getActionForward($act) function getActionForward($act)
{ {
$action_forward = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE); $oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -576,7 +591,7 @@ class moduleModel extends module
} }
// retrieve and caching all registered action_forward // retrieve and caching all registered action_forward
if(!$action_forward) if($action_forward === false)
{ {
$args = new stdClass(); $args = new stdClass();
$output = executeQueryArray('module.getActionForward',$args); $output = executeQueryArray('module.getActionForward',$args);
@ -589,7 +604,6 @@ class moduleModel extends module
$action_forward[$item->act] = $item; $action_forward[$item->act] = $item;
} }
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
$oCacheHandler->put($cache_key, $action_forward); $oCacheHandler->put($cache_key, $action_forward);
@ -611,6 +625,7 @@ class moduleModel extends module
*/ */
function getTriggers($trigger_name, $called_position) function getTriggers($trigger_name, $called_position)
{ {
$triggers = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE); $oCacheHandler = CacheHandler::getInstance('object', NULL, TRUE);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -620,7 +635,7 @@ class moduleModel extends module
$triggers = $oCacheHandler->get($cache_key); $triggers = $oCacheHandler->get($cache_key);
} }
if(!$triggers && !is_array($triggers)) if($triggers === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->trigger_name = $trigger_name; $args->trigger_name = $trigger_name;
@ -1336,6 +1351,7 @@ class moduleModel extends module
*/ */
function getModuleConfig($module, $site_srl = 0) function getModuleConfig($module, $site_srl = 0)
{ {
$config = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1344,15 +1360,17 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key); $cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$config = $oCacheHandler->get($cache_key); $config = $oCacheHandler->get($cache_key);
} }
if(!$config)
if($config === false)
{ {
if(!$GLOBALS['__ModuleConfig__'][$site_srl][$module]) if(!isset($GLOBALS['__ModuleConfig__'][$site_srl][$module]))
{ {
$args = new stdClass(); $args = new stdClass();
$args->module = $module; $args->module = $module;
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
$output = executeQuery('module.getModuleConfig', $args); $output = executeQuery('module.getModuleConfig', $args);
$config = unserialize($output->data->config); $config = unserialize($output->data->config);
if(!$config) $config = new stdClass;
//insert in cache //insert in cache
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1373,6 +1391,7 @@ class moduleModel extends module
*/ */
function getModulePartConfig($module, $module_srl) function getModulePartConfig($module, $module_srl)
{ {
$config = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1381,15 +1400,17 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key); $cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$config = $oCacheHandler->get($cache_key); $config = $oCacheHandler->get($cache_key);
} }
if(!$config)
if($config === false)
{ {
if(!$GLOBALS['__ModulePartConfig__'][$module][$module_srl]) if(!isset($GLOBALS['__ModulePartConfig__'][$module][$module_srl]))
{ {
$args = new stdClass(); $args = new stdClass();
$args->module = $module; $args->module = $module;
$args->module_srl = $module_srl; $args->module_srl = $module_srl;
$output = executeQuery('module.getModulePartConfig', $args); $output = executeQuery('module.getModulePartConfig', $args);
$config = unserialize($output->data->config); $config = unserialize($output->data->config);
if(!$config) $config = new stdClass;
//insert in cache //insert in cache
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1690,6 +1711,7 @@ class moduleModel extends module
$get_module_srls = array(); $get_module_srls = array();
if(!is_array($list_module_srl)) $list_module_srl = array($list_module_srl); if(!is_array($list_module_srl)) $list_module_srl = array($list_module_srl);
$vars = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1715,7 +1737,7 @@ class moduleModel extends module
$get_module_srls = $list_module_srl; $get_module_srls = $list_module_srl;
} }
if(count($get_module_srls)) if($vars === false || count($get_module_srls) > 0)
{ {
$args = new stdClass(); $args = new stdClass();
$args->module_srl = implode(',', $get_module_srls); $args->module_srl = implode(',', $get_module_srls);
@ -1760,6 +1782,7 @@ class moduleModel extends module
*/ */
function getModuleSkinVars($module_srl) function getModuleSkinVars($module_srl)
{ {
$skin_vars = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -1768,7 +1791,7 @@ class moduleModel extends module
$skin_vars = $oCacheHandler->get($cache_key); $skin_vars = $oCacheHandler->get($cache_key);
} }
if(!$skin_vars) if($skin_vars === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->module_srl = $module_srl; $args->module_srl = $module_srl;
@ -1874,6 +1897,7 @@ class moduleModel extends module
*/ */
function getModuleMobileSkinVars($module_srl) function getModuleMobileSkinVars($module_srl)
{ {
$skin_vars = false;
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
{ {
@ -1882,7 +1906,7 @@ class moduleModel extends module
$skin_vars = $oCacheHandler->get($cache_key); $skin_vars = $oCacheHandler->get($cache_key);
} }
if(!$skin_vars) if($skin_vars === false)
{ {
$args = new stdClass(); $args = new stdClass();
$args->module_srl = $module_srl; $args->module_srl = $module_srl;
@ -1908,6 +1932,7 @@ class moduleModel extends module
function syncMobileSkinInfoToModuleInfo(&$module_info) function syncMobileSkinInfoToModuleInfo(&$module_info)
{ {
if(!$module_info->module_srl) return; if(!$module_info->module_srl) return;
$skin_vars = false;
// cache controll // cache controll
$oCacheHandler = CacheHandler::getInstance('object', null, true); $oCacheHandler = CacheHandler::getInstance('object', null, true);
if($oCacheHandler->isSupport()) if($oCacheHandler->isSupport())
@ -1916,7 +1941,7 @@ class moduleModel extends module
$cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key); $cache_key = $oCacheHandler->getGroupKey('site_and_module', $object_key);
$skin_vars = $oCacheHandler->get($cache_key); $skin_vars = $oCacheHandler->get($cache_key);
} }
if(!$skin_vars) if($skin_vars === false)
{ {
$args = new stdClass; $args = new stdClass;
$args->module_srl = $module_info->module_srl; $args->module_srl = $module_info->module_srl;

View file

@ -27,32 +27,22 @@ class sessionController extends session
function write($session_key, $val) function write($session_key, $val)
{ {
if(!$session_key || !$this->session_started) return; if(!$session_key || !$this->session_started) return;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$cache_vars = $oCacheHandler->get($cache_key);
}
$args = new stdClass();
$args->session_key = $session_key;
if($cache_vars) $session_info = $cache_vars;
else
{
$output = executeQuery('session.getSession', $args); $output = executeQuery('session.getSession', $args);
$session_info = $output->data; $session_info = $output->data;
}
//if ip has changed delete the session from cache and db //if ip has changed delete the session from db
if($session_info->session_key == $session_key && $session_info->ipaddress != $_SERVER['REMOTE_ADDR']) if($session_info->session_key == $session_key && $session_info->ipaddress != $_SERVER['REMOTE_ADDR'])
{ {
if($oCacheHandler->isSupport()) $oCacheHandler->delete($cache_key);
executeQuery('session.deleteSession', $args); executeQuery('session.deleteSession', $args);
return true; return true;
} }
$args->expired = date("YmdHis", $_SERVER['REQUEST_TIME'] + $this->lifetime); $args->expired = date("YmdHis", $_SERVER['REQUEST_TIME'] + $this->lifetime);
$args->val = $val; $args->val = $val;
$args->cur_mid = Context::get('mid'); $args->cur_mid = Context::get('mid');
if(!$args->cur_mid) if(!$args->cur_mid)
{ {
$module_info = Context::get('current_module_info'); $module_info = Context::get('current_module_info');
@ -70,43 +60,15 @@ class sessionController extends session
} }
$args->ipaddress = $_SERVER['REMOTE_ADDR']; $args->ipaddress = $_SERVER['REMOTE_ADDR'];
$args->last_update = date("YmdHis", $_SERVER['REQUEST_TIME']); $args->last_update = date("YmdHis", $_SERVER['REQUEST_TIME']);
$diff = $args->last_update - $cache_vars->last_update;
//verify if session values have changed
if($val == $cache_vars->val)
{
// if more than 5 minutes passed than modify the db session also
if($diff > 300)
{
//put session into cache
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
//put session into db //put session into db
if($session_info->session_key) $output = executeQuery('session.updateSession', $args); if($session_info->session_key)
{
$output = executeQuery('session.updateSession', $args);
} }
else else
{ {
//put session into cache $output = executeQuery('session.insertSession', $args);
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
}
}
else
{
//put session into cache
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->put($cache_key,$args,$this->lifetime);
}
//put session into db
if($session_info->session_key) $output = executeQuery('session.updateSession', $args);
else $output = executeQuery('session.insertSession', $args);
} }
return true; return true;
@ -115,17 +77,12 @@ class sessionController extends session
function destroy($session_key) function destroy($session_key)
{ {
if(!$session_key || !$this->session_started) return; if(!$session_key || !$this->session_started) return;
//remove session from cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$oCacheHandler->delete($cache_key);
}
//remove session from db //remove session from db
$args = new stdClass(); $args = new stdClass();
$args->session_key = $session_key; $args->session_key = $session_key;
executeQuery('session.deleteSession', $args); executeQuery('session.deleteSession', $args);
return true; return true;
} }

View file

@ -23,36 +23,27 @@ class sessionModel extends session
{ {
if(!$session_key || !$this->session_started) return; if(!$session_key || !$this->session_started) return;
$output = new Object();
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$cache_key = 'session:'.$session_key;
$output->data = $oCacheHandler->get($cache_key);
}
if(!$output->data)
{
$args = new stdClass(); $args = new stdClass();
$args->session_key = $session_key; $args->session_key = $session_key;
$columnList = array('session_key', 'cur_mid', 'val'); $columnList = array('session_key', 'cur_mid', 'val');
$output = executeQuery('session.getSession', $args, $columnList); $output = executeQuery('session.getSession', $args, $columnList);
// Confirm there is a table created if read error occurs // Confirm there is a table created if read error occurs
if(!$output->toBool()) if(!$output->toBool())
{ {
$oDB = &DB::getInstance(); $oDB = DB::getInstance();
if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml'); if(!$oDB->isTableExists('session')) $oDB->createTableByXmlFile($this->module_path.'schemas/session.xml');
if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
$output = executeQuery('session.getSession', $args); $output = executeQuery('session.getSession', $args);
} }
// Check if there is a table created in case there is no "cur_mid" value in the sessions information // Check if there is a table created in case there is no "cur_mid" value in the sessions information
if(!isset($output->data->cur_mid)) if(!isset($output->data->cur_mid))
{ {
$oDB = &DB::getInstance(); $oDB = DB::getInstance();
if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128); if(!$oDB->isColumnExists("session", "cur_mid")) $oDB->addColumn('session',"cur_mid","varchar",128);
} }
}
return $output->data->val; return $output->data->val;
} }