diff options
Diffstat (limited to 'lib/smarty/demo/plugins/cacheresource.apc.php')
-rw-r--r-- | lib/smarty/demo/plugins/cacheresource.apc.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/smarty/demo/plugins/cacheresource.apc.php b/lib/smarty/demo/plugins/cacheresource.apc.php new file mode 100644 index 000000000..00ba59817 --- /dev/null +++ b/lib/smarty/demo/plugins/cacheresource.apc.php @@ -0,0 +1,77 @@ +<?php + +/** + * APC CacheResource + * + * CacheResource Implementation based on the KeyValueStore API to use + * memcache as the storage resource for Smarty's output caching. + * * + * @package CacheResource-examples + * @author Uwe Tews + */ +class Smarty_CacheResource_Apc extends Smarty_CacheResource_KeyValueStore { + + public function __construct() + { + // test if APC is present + if(!function_exists('apc_cache_info')) { + throw new Exception('APC Template Caching Error: APC is not installed'); + } + } + + /** + * Read values for a set of keys from cache + * + * @param array $keys list of keys to fetch + * @return array list of values with the given keys used as indexes + * @return boolean true on success, false on failure + */ + protected function read(array $keys) + { + $_res = array(); + $res = apc_fetch($keys); + foreach ($res as $k => $v) { + $_res[$k] = $v; + } + return $_res; + } + + /** + * Save values for a set of keys to cache + * + * @param array $keys list of values to save + * @param int $expire expiration time + * @return boolean true on success, false on failure + */ + protected function write(array $keys, $expire=null) + { + foreach ($keys as $k => $v) { + apc_store($k, $v, $expire); + } + return true; + } + + /** + * Remove values from cache + * + * @param array $keys list of keys to delete + * @return boolean true on success, false on failure + */ + protected function delete(array $keys) + { + foreach ($keys as $k) { + apc_delete($k); + } + return true; + } + + /** + * Remove *all* values from cache + * + * @return boolean true on success, false on failure + */ + protected function purge() + { + return apc_clear_cache('user'); + } +} |