aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php')
-rw-r--r--vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php99
1 files changed, 99 insertions, 0 deletions
diff --git a/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
new file mode 100644
index 000000000..71fe9d3f1
--- /dev/null
+++ b/vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * Memcache CacheResource
+ * CacheResource Implementation based on the KeyValueStore API to use
+ * memcache as the storage resource for Smarty's output caching.
+ * Note that memcache has a limitation of 256 characters per cache-key.
+ * To avoid complications all cache-keys are translated to a sha1 hash.
+ *
+ * @package CacheResource-examples
+ * @author Rodney Rehm
+ */
+class Smarty_CacheResource_Memcache extends Smarty_CacheResource_KeyValueStore
+{
+ /**
+ * memcache instance
+ *
+ * @var Memcache
+ */
+ protected $memcache = null;
+
+ /**
+ * Smarty_CacheResource_Memcache constructor.
+ */
+ public function __construct()
+ {
+ if (class_exists('Memcached')) {
+ $this->memcache = new Memcached();
+ } else {
+ $this->memcache = new Memcache();
+ }
+ $this->memcache->addServer('127.0.0.1', 11211);
+ }
+
+ /**
+ * 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();
+ foreach ($keys as $key) {
+ $k = sha1($key);
+ $res[$key] = $this->memcache->get($k);
+ }
+ 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) {
+ $k = sha1($k);
+ if (class_exists('Memcached')) {
+ $this->memcache->set($k, $v, $expire);
+ } else {
+ $this->memcache->set($k, $v, 0, $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) {
+ $k = sha1($k);
+ $this->memcache->delete($k);
+ }
+ return true;
+ }
+
+ /**
+ * Remove *all* values from cache
+ *
+ * @return boolean true on success, false on failure
+ */
+ protected function purge()
+ {
+ return $this->memcache->flush();
+ }
+}