Change default cache driver to 'dummy' with minimal caching

This commit is contained in:
Kijin Sung 2016-04-22 23:26:04 +09:00
parent d4e2163e2b
commit ba10c91d0e
15 changed files with 95 additions and 120 deletions

View file

@ -64,7 +64,7 @@ class Cache
} }
else else
{ {
self::$_driver = new Drivers\Cache\File(array()); self::$_driver = new Drivers\Cache\Dummy(array());
} }
if (self::$_driver->prefix) if (self::$_driver->prefix)
@ -129,13 +129,34 @@ class Cache
/** /**
* Get the automatically generated cache prefix for this installation of Rhymix. * Get the automatically generated cache prefix for this installation of Rhymix.
* *
* return object|null * @return object|null
*/ */
public static function getCachePrefix() public static function getCachePrefix()
{ {
return self::$_prefix; return self::$_prefix;
} }
/**
* Get the default TTL.
*
* @return int
*/
public static function getDefaultTTL()
{
return self::$_ttl;
}
/**
* Set the default TTL.
*
* @param int $ttl
* @return void
*/
public static function setDefaultTTL($ttl)
{
self::$_ttl = $ttl;
}
/** /**
* Get the value of a key. * Get the value of a key.
* *
@ -160,26 +181,29 @@ class Cache
* Set the value to a key. * Set the value to a key.
* *
* This method returns true on success and false on failure. * This method returns true on success and false on failure.
* $ttl is measured in seconds. If it is zero, the key should not expire. * $ttl is measured in seconds. If it is not given, the default TTL is used.
* $force is used to cache essential data when using the default driver.
* *
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl (optional) * @param int $ttl (optional)
* @param bool $force (optional)
* @return bool * @return bool
*/ */
public static function set($key, $value, $ttl = null) public static function set($key, $value, $ttl = 0, $force = false)
{ {
if (self::$_driver !== null) if (self::$_driver !== null)
{ {
$ttl = intval($ttl);
if ($ttl >= (3600 * 24 * 30)) if ($ttl >= (3600 * 24 * 30))
{ {
$ttl = min(3600 * 24 * 30, max(0, $ttl - time())); $ttl = min(3600 * 24 * 30, max(0, $ttl - time()));
} }
if ($ttl === null) if ($ttl === 0)
{ {
$ttl = self::$_ttl; $ttl = self::$_ttl;
} }
return self::$_driver->set(self::getRealKey($key), $value, intval($ttl)) ? true : false; return self::$_driver->set(self::getRealKey($key), $value, $ttl, $force) ? true : false;
} }
else else
{ {

View file

@ -71,9 +71,10 @@ class APC implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
return apc_store($key, $value, $ttl); return apc_store($key, $value, $ttl);
} }

View file

@ -5,7 +5,7 @@ namespace Rhymix\Framework\Drivers\Cache;
/** /**
* The dummy cache driver. * The dummy cache driver.
*/ */
class Dummy implements \Rhymix\Framework\Drivers\CacheInterface class Dummy extends File implements \Rhymix\Framework\Drivers\CacheInterface
{ {
/** /**
* Set this flag to false to disable cache prefixes. * Set this flag to false to disable cache prefixes.
@ -17,42 +17,6 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/ */
public $data = array(); public $data = array();
/**
* Create a new instance of the current cache driver, using the given settings.
*
* @param array $config
* @return void
*/
public function __construct(array $config)
{
}
/**
* Check if the current cache driver is supported on this server.
*
* This method returns true on success and false on failure.
*
* @return bool
*/
public function isSupported()
{
return true;
}
/**
* Validate cache settings.
*
* This method returns true on success and false on failure.
*
* @param mixed $config
* @return bool
*/
public static function validateSettings($config)
{
return true;
}
/** /**
* Get the value of a key. * Get the value of a key.
* *
@ -63,7 +27,12 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/ */
public function get($key) public function get($key)
{ {
if (isset($this->data[$key])) $value = parent::get($key);
if ($value !== null)
{
return $value;
}
elseif (isset($this->data[$key]))
{ {
if ($this->data[$key][0] > 0 && $this->data[$key][0] < time()) if ($this->data[$key][0] > 0 && $this->data[$key][0] < time())
{ {
@ -87,12 +56,20 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
$this->data[$key] = array($ttl ? (time() + $ttl) : 0, $value); if ($force)
return true; {
return parent::set($key, $value, $ttl, $force);
}
else
{
$this->data[$key] = array($ttl ? (time() + $ttl) : 0, $value);
return true;
}
} }
/** /**
@ -106,7 +83,11 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/ */
public function delete($key) public function delete($key)
{ {
if (isset($this->data[$key])) if (parent::delete($key))
{
return true;
}
elseif (isset($this->data[$key]))
{ {
unset($this->data[$key]); unset($this->data[$key]);
return true; return true;
@ -127,46 +108,7 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/ */
public function exists($key) public function exists($key)
{ {
return isset($this->data[$key]); return parent::exists($key) || isset($this->data[$key]);
}
/**
* Increase the value of a key by $amount.
*
* If the key does not exist, this method assumes that the current value is zero.
* This method returns the new value.
*
* @param string $key
* @param int $amount
* @return int
*/
public function incr($key, $amount)
{
if (isset($this->data[$key]))
{
$this->data[$key][1] += $amount;
return $this->data[$key][1];
}
else
{
$this->set($key, $amount, 0);
return $amount;
}
}
/**
* Decrease the value of a key by $amount.
*
* If the key does not exist, this method assumes that the current value is zero.
* This method returns the new value.
*
* @param string $key
* @param int $amount
* @return int
*/
public function decr($key, $amount)
{
return $this->incr($key, 0 - $amount);
} }
/** /**
@ -178,6 +120,7 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/ */
public function clear() public function clear()
{ {
parent::clear();
$this->data = array(); $this->data = array();
return true; return true;
} }

View file

@ -96,9 +96,10 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
return Storage::writePHPData($this->_getFilename($key), array($ttl ? (time() + $ttl) : 0, $value), $key); return Storage::writePHPData($this->_getFilename($key), array($ttl ? (time() + $ttl) : 0, $value), $key);
} }

View file

@ -136,9 +136,10 @@ class Memcached implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
if ($this->_ext === 'Memcached') if ($this->_ext === 'Memcached')
{ {

View file

@ -144,9 +144,10 @@ class Redis implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
try try
{ {

View file

@ -130,9 +130,10 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
$table = 'cache_' . (crc32($key) % 32); $table = 'cache_' . (crc32($key) % 32);
$stmt = $this->_dbh->prepare('INSERT OR REPLACE INTO ' . $table . ' (k, v, exp) VALUES (:key, :val, :exp)'); $stmt = $this->_dbh->prepare('INSERT OR REPLACE INTO ' . $table . ' (k, v, exp) VALUES (:key, :val, :exp)');

View file

@ -71,9 +71,10 @@ class WinCache implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
return wincache_ucache_set($key, $value, $ttl); return wincache_ucache_set($key, $value, $ttl);
} }

View file

@ -71,9 +71,10 @@ class XCache implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl) public function set($key, $value, $ttl = 0, $force = false)
{ {
return xcache_set($key, $value, $ttl); return xcache_set($key, $value, $ttl);
} }

View file

@ -53,9 +53,10 @@ interface CacheInterface
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @param bool $force
* @return bool * @return bool
*/ */
public function set($key, $value, $ttl); public function set($key, $value, $ttl = 0, $force = false);
/** /**
* Delete a key. * Delete a key.

View file

@ -43,7 +43,7 @@ class counterModel extends counter
if($iplogged) if($iplogged)
{ {
Rhymix\Framework\Cache::set($group_key . ':' . $cache_key, $iplogged); Rhymix\Framework\Cache::set($group_key . ':' . $cache_key, $iplogged, 0, true);
} }
return $iplogged; return $iplogged;
@ -79,7 +79,7 @@ class counterModel extends counter
if($insertedTodayStatus) if($insertedTodayStatus)
{ {
Rhymix\Framework\Cache::set($cache_key, true); Rhymix\Framework\Cache::set($cache_key, true, 0, true);
$_old_date = date('Ymd', strtotime('-1 day')); $_old_date = date('Ymd', strtotime('-1 day'));
Rhymix\Framework\Cache::delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date); Rhymix\Framework\Cache::delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date);
} }

View file

@ -429,7 +429,7 @@ class documentModel extends document
$keys = $oExtraVar->getExtraVars(); $keys = $oExtraVar->getExtraVars();
if(!$keys) $keys = array(); if(!$keys) $keys = array();
Rhymix\Framework\Cache::set("site_and_module:module_document_extra_keys:$module_srl", $keys); Rhymix\Framework\Cache::set("site_and_module:module_document_extra_keys:$module_srl", $keys, 0, true);
} }

View file

@ -496,7 +496,7 @@ class memberModel extends member
$output = executeQueryArray('member.getMemberGroups', $args); $output = executeQueryArray('member.getMemberGroups', $args);
$group_list = $output->data; $group_list = $output->data;
//insert in cache //insert in cache
Rhymix\Framework\Cache::set($cache_key, $group_list); Rhymix\Framework\Cache::set($cache_key, $group_list, 0, true);
} }
if(!$group_list) return array(); if(!$group_list) return array();
@ -541,7 +541,7 @@ class memberModel extends member
$args->site_srl = $site_srl; $args->site_srl = $site_srl;
$output = executeQuery('member.getDefaultGroup', $args, $columnList); $output = executeQuery('member.getDefaultGroup', $args, $columnList);
$default_group = $output->data; $default_group = $output->data;
Rhymix\Framework\Cache::set("member:default_group:$site_srl", $default_group); Rhymix\Framework\Cache::set("member:default_group:$site_srl", $default_group, 0, true);
} }
return $default_group; return $default_group;
@ -591,7 +591,7 @@ class memberModel extends member
$args->order_type = 'asc'; $args->order_type = 'asc';
$output = executeQueryArray('member.getGroups', $args); $output = executeQueryArray('member.getGroups', $args);
$group_list = $output->data; $group_list = $output->data;
Rhymix\Framework\Cache::set("member:member_groups:site:$site_srl", $group_list); Rhymix\Framework\Cache::set("member:member_groups:site:$site_srl", $group_list, 0, true);
} }
if(!$group_list) if(!$group_list)

View file

@ -125,7 +125,7 @@ class moduleModel extends module
$args->domain = $domain; $args->domain = $domain;
$output = executeQuery('module.getSiteInfoByDomain', $args); $output = executeQuery('module.getSiteInfoByDomain', $args);
$site_info = $output->data; $site_info = $output->data;
Rhymix\Framework\Cache::set('site_and_module:site_info:' . md5($domain), $site_info); Rhymix\Framework\Cache::set('site_and_module:site_info:' . md5($domain), $site_info, 0, true);
} }
if($site_info && $vid) if($site_info && $vid)
@ -177,7 +177,7 @@ class moduleModel extends module
$output = executeQuery('module.getSiteInfo', $args); $output = executeQuery('module.getSiteInfo', $args);
} }
$site_info = $output->data; $site_info = $output->data;
Rhymix\Framework\Cache::set('site_and_module:default_site', $site_info); Rhymix\Framework\Cache::set('site_and_module:default_site', $site_info, 0, true);
} }
} }
@ -215,8 +215,8 @@ class moduleModel extends module
$output = executeQuery('module.getMidInfo', $args); $output = executeQuery('module.getMidInfo', $args);
$module_info = $output->data; $module_info = $output->data;
Rhymix\Framework\Cache::set('site_and_module:module_srl:' . $mid . '_' . $site_srl, $module_info->module_srl); Rhymix\Framework\Cache::set('site_and_module:module_srl:' . $mid . '_' . $site_srl, $module_info->module_srl, 0, true);
Rhymix\Framework\Cache::set('site_and_module:mid_info:' . $module_info->module_srl, $module_info); Rhymix\Framework\Cache::set('site_and_module:mid_info:' . $module_info->module_srl, $module_info, 0, true);
} }
$this->applyDefaultSkin($module_info); $this->applyDefaultSkin($module_info);
@ -301,8 +301,8 @@ class moduleModel extends module
if($mid_info === null) if($mid_info === null)
{ {
Rhymix\Framework\Cache::set('site_and_module:module_srl:' . $mid . '_' . $site_srl, $output->data->module_srl); Rhymix\Framework\Cache::set('site_and_module:module_srl:' . $mid . '_' . $site_srl, $output->data->module_srl, 0, true);
Rhymix\Framework\Cache::set('site_and_module:mid_info:' . $output->data->module_srl, $moduleInfo); Rhymix\Framework\Cache::set('site_and_module:mid_info:' . $output->data->module_srl, $moduleInfo, 0, true);
} }
else else
{ {
@ -338,7 +338,7 @@ class moduleModel extends module
if(!$output->toBool()) return; if(!$output->toBool()) return;
$mid_info = $output->data; $mid_info = $output->data;
$this->applyDefaultSkin($mid_info); $this->applyDefaultSkin($mid_info);
Rhymix\Framework\Cache::set("site_and_module:mid_info:$module_srl", $mid_info); Rhymix\Framework\Cache::set("site_and_module:mid_info:$module_srl", $mid_info, 0, true);
} }
if($mid_info && count($columnList)) if($mid_info && count($columnList))
@ -464,7 +464,7 @@ class moduleModel extends module
if(count($args) === 1 && isset($args->site_srl)) if(count($args) === 1 && isset($args->site_srl))
{ {
Rhymix\Framework\Cache::set('site_and_module:module:mid_list_' . $args->site_srl, $list); Rhymix\Framework\Cache::set('site_and_module:module:mid_list_' . $args->site_srl, $list, 0, true);
} }
} }
@ -541,7 +541,7 @@ class moduleModel extends module
$action_forward[$item->act] = $item; $action_forward[$item->act] = $item;
} }
Rhymix\Framework\Cache::set('action_forward', $action_forward); Rhymix\Framework\Cache::set('action_forward', $action_forward, 0, true);
} }
if($action_forward[$act]) if($action_forward[$act])
@ -583,7 +583,7 @@ class moduleModel extends module
$triggers = $output->data; $triggers = $output->data;
if($output->toBool()) if($output->toBool())
{ {
Rhymix\Framework\Cache::set('triggers', $triggers); Rhymix\Framework\Cache::set('triggers', $triggers, 0, true);
} }
} }
foreach($triggers as $item) foreach($triggers as $item)
@ -1317,7 +1317,7 @@ class moduleModel extends module
else $config = new stdClass; else $config = new stdClass;
//insert in cache //insert in cache
Rhymix\Framework\Cache::set('site_and_module:module_config:' . $module . '_' . $site_srl, $config); Rhymix\Framework\Cache::set('site_and_module:module_config:' . $module . '_' . $site_srl, $config, 0, true);
$GLOBALS['__ModuleConfig__'][$site_srl][$module] = $config; $GLOBALS['__ModuleConfig__'][$site_srl][$module] = $config;
} }
return $GLOBALS['__ModuleConfig__'][$site_srl][$module]; return $GLOBALS['__ModuleConfig__'][$site_srl][$module];
@ -1345,7 +1345,7 @@ class moduleModel extends module
else $config = null; else $config = null;
//insert in cache //insert in cache
Rhymix\Framework\Cache::set('site_and_module:module_part_config:' . $module . '_' . $module_srl, $config === null ? 0 : $config); Rhymix\Framework\Cache::set('site_and_module:module_part_config:' . $module . '_' . $module_srl, $config === null ? 0 : $config, 0, true);
$GLOBALS['__ModulePartConfig__'][$module][$module_srl] = $config; $GLOBALS['__ModulePartConfig__'][$module][$module_srl] = $config;
} }
return $GLOBALS['__ModulePartConfig__'][$module][$module_srl]; return $GLOBALS['__ModulePartConfig__'][$module][$module_srl];
@ -1669,7 +1669,7 @@ class moduleModel extends module
{ {
foreach($get_module_srls as $module_srl) foreach($get_module_srls as $module_srl)
{ {
Rhymix\Framework\Cache::set("site_and_module:module_extra_vars:$module_srl", new stdClass); Rhymix\Framework\Cache::set("site_and_module:module_extra_vars:$module_srl", new stdClass, 0, true);
$extra_vars[$module_srl] = new stdClass; $extra_vars[$module_srl] = new stdClass;
} }
} }
@ -1683,7 +1683,7 @@ class moduleModel extends module
} }
$extra_vars[$val->module_srl]->{$val->name} = $val->value; $extra_vars[$val->module_srl]->{$val->name} = $val->value;
Rhymix\Framework\Cache::set('site_and_module:module_extra_vars:' . $val->module_srl, $extra_vars[$val->module_srl]); Rhymix\Framework\Cache::set('site_and_module:module_extra_vars:' . $val->module_srl, $extra_vars[$val->module_srl], 0, true);
} }
} }
@ -1709,7 +1709,7 @@ class moduleModel extends module
$skin_vars[$vars->name] = $vars; $skin_vars[$vars->name] = $vars;
} }
Rhymix\Framework\Cache::set("site_and_module:module_skin_vars:$module_srl", $skin_vars, 0); Rhymix\Framework\Cache::set("site_and_module:module_skin_vars:$module_srl", $skin_vars, 0, true);
} }
return $skin_vars; return $skin_vars;
@ -1815,7 +1815,7 @@ class moduleModel extends module
$skin_vars[$vars->name] = $vars; $skin_vars[$vars->name] = $vars;
} }
Rhymix\Framework\Cache::set("site_and_module:module_mobile_skin_vars:$module_srl", $skin_vars); Rhymix\Framework\Cache::set("site_and_module:module_mobile_skin_vars:$module_srl", $skin_vars, 0, true);
} }
return $skin_vars; return $skin_vars;
@ -1838,7 +1838,7 @@ class moduleModel extends module
if(!$output->toBool()) return; if(!$output->toBool()) return;
$skin_vars = $output->data; $skin_vars = $output->data;
Rhymix\Framework\Cache::set('site_and_module:module_mobile_skin_vars:' . $module_info->module_srl, $skin_vars); Rhymix\Framework\Cache::set('site_and_module:module_mobile_skin_vars:' . $module_info->module_srl, $skin_vars, 0, true);
} }
if(!$skin_vars) return; if(!$skin_vars) return;

View file

@ -405,7 +405,7 @@ class widgetController extends widget
$oModuleController = getController('module'); $oModuleController = getController('module');
$oModuleController->replaceDefinedLangCode($widget_content); $oModuleController->replaceDefinedLangCode($widget_content);
Rhymix\Framework\Cache::set('widget_cache:' . $widget_sequence, $widget_content, $widget_cache); Rhymix\Framework\Cache::set('widget_cache:' . $widget_sequence, $widget_content, $widget_cache, true);
return $widget_content; return $widget_content;
} }