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
{
self::$_driver = new Drivers\Cache\File(array());
self::$_driver = new Drivers\Cache\Dummy(array());
}
if (self::$_driver->prefix)
@ -129,13 +129,34 @@ class Cache
/**
* Get the automatically generated cache prefix for this installation of Rhymix.
*
* return object|null
* @return object|null
*/
public static function getCachePrefix()
{
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.
*
@ -160,26 +181,29 @@ class Cache
* Set the value to a key.
*
* 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 mixed $value
* @param int $ttl (optional)
* @param bool $force (optional)
* @return bool
*/
public static function set($key, $value, $ttl = null)
public static function set($key, $value, $ttl = 0, $force = false)
{
if (self::$_driver !== null)
{
$ttl = intval($ttl);
if ($ttl >= (3600 * 24 * 30))
{
$ttl = min(3600 * 24 * 30, max(0, $ttl - time()));
}
if ($ttl === null)
if ($ttl === 0)
{
$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
{

View file

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

View file

@ -5,7 +5,7 @@ namespace Rhymix\Framework\Drivers\Cache;
/**
* 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.
@ -17,42 +17,6 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/
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.
*
@ -63,7 +27,12 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/
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())
{
@ -87,12 +56,20 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key
* @param mixed $value
* @param int $ttl
* @param bool $force
* @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);
return true;
if ($force)
{
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)
{
if (isset($this->data[$key]))
if (parent::delete($key))
{
return true;
}
elseif (isset($this->data[$key]))
{
unset($this->data[$key]);
return true;
@ -127,46 +108,7 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/
public function exists($key)
{
return 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);
return parent::exists($key) || isset($this->data[$key]);
}
/**
@ -178,6 +120,7 @@ class Dummy implements \Rhymix\Framework\Drivers\CacheInterface
*/
public function clear()
{
parent::clear();
$this->data = array();
return true;
}

View file

@ -96,9 +96,10 @@ class File implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key
* @param mixed $value
* @param int $ttl
* @param bool $force
* @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);
}

View file

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

View file

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

View file

@ -130,9 +130,10 @@ class SQLite implements \Rhymix\Framework\Drivers\CacheInterface
* @param string $key
* @param mixed $value
* @param int $ttl
* @param bool $force
* @return bool
*/
public function set($key, $value, $ttl)
public function set($key, $value, $ttl = 0, $force = false)
{
$table = 'cache_' . (crc32($key) % 32);
$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 mixed $value
* @param int $ttl
* @param bool $force
* @return bool
*/
public function set($key, $value, $ttl)
public function set($key, $value, $ttl = 0, $force = false)
{
return wincache_ucache_set($key, $value, $ttl);
}

View file

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

View file

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

View file

@ -43,7 +43,7 @@ class counterModel extends counter
if($iplogged)
{
Rhymix\Framework\Cache::set($group_key . ':' . $cache_key, $iplogged);
Rhymix\Framework\Cache::set($group_key . ':' . $cache_key, $iplogged, 0, true);
}
return $iplogged;
@ -79,7 +79,7 @@ class counterModel extends counter
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'));
Rhymix\Framework\Cache::delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date);
}

View file

@ -429,7 +429,7 @@ class documentModel extends document
$keys = $oExtraVar->getExtraVars();
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);
$group_list = $output->data;
//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();
@ -541,7 +541,7 @@ class memberModel extends member
$args->site_srl = $site_srl;
$output = executeQuery('member.getDefaultGroup', $args, $columnList);
$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;
@ -591,7 +591,7 @@ class memberModel extends member
$args->order_type = 'asc';
$output = executeQueryArray('member.getGroups', $args);
$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)

View file

@ -125,7 +125,7 @@ class moduleModel extends module
$args->domain = $domain;
$output = executeQuery('module.getSiteInfoByDomain', $args);
$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)
@ -177,7 +177,7 @@ class moduleModel extends module
$output = executeQuery('module.getSiteInfo', $args);
}
$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);
$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:mid_info:' . $module_info->module_srl, $module_info);
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, 0, true);
}
$this->applyDefaultSkin($module_info);
@ -301,8 +301,8 @@ class moduleModel extends module
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:mid_info:' . $output->data->module_srl, $moduleInfo);
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, 0, true);
}
else
{
@ -338,7 +338,7 @@ class moduleModel extends module
if(!$output->toBool()) return;
$mid_info = $output->data;
$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))
@ -464,7 +464,7 @@ class moduleModel extends module
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;
}
Rhymix\Framework\Cache::set('action_forward', $action_forward);
Rhymix\Framework\Cache::set('action_forward', $action_forward, 0, true);
}
if($action_forward[$act])
@ -583,7 +583,7 @@ class moduleModel extends module
$triggers = $output->data;
if($output->toBool())
{
Rhymix\Framework\Cache::set('triggers', $triggers);
Rhymix\Framework\Cache::set('triggers', $triggers, 0, true);
}
}
foreach($triggers as $item)
@ -1317,7 +1317,7 @@ class moduleModel extends module
else $config = new stdClass;
//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;
}
return $GLOBALS['__ModuleConfig__'][$site_srl][$module];
@ -1345,7 +1345,7 @@ class moduleModel extends module
else $config = null;
//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;
}
return $GLOBALS['__ModulePartConfig__'][$module][$module_srl];
@ -1669,7 +1669,7 @@ class moduleModel extends module
{
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;
}
}
@ -1683,7 +1683,7 @@ class moduleModel extends module
}
$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;
}
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;
@ -1815,7 +1815,7 @@ class moduleModel extends module
$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;
@ -1838,7 +1838,7 @@ class moduleModel extends module
if(!$output->toBool()) return;
$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;

View file

@ -405,7 +405,7 @@ class widgetController extends widget
$oModuleController = getController('module');
$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;
}