From b031fdf43d475ec81fa367ed08da4ae2df41d629 Mon Sep 17 00:00:00 2001 From: Bartosz Romanowski Date: Sat, 18 Jun 2011 23:01:52 +0200 Subject: [PATCH] APC cache driver --- system/cache/driver/apc.php | 80 +++++++++++++++++++++++++++++++++++++ system/cache/factory.php | 3 ++ 2 files changed, 83 insertions(+) create mode 100644 system/cache/driver/apc.php diff --git a/system/cache/driver/apc.php b/system/cache/driver/apc.php new file mode 100644 index 00000000..d689129d --- /dev/null +++ b/system/cache/driver/apc.php @@ -0,0 +1,80 @@ +get($key))); + } + + /** + * Get an item from the cache. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public function get($key, $default = null) + { + // -------------------------------------------------- + // If the item has already been loaded, return it. + // -------------------------------------------------- + if (array_key_exists($key, $this->items)) + { + return $this->items[$key]; + } + + // -------------------------------------------------- + // Attempt to the get the item from cache. + // -------------------------------------------------- + $cache = apc_fetch($key); + + // -------------------------------------------------- + // Verify that the item was retrieved. + // -------------------------------------------------- + if ($cache === false) + { + return $default; + } + + return $this->items[$key] = $cache; + } + + /** + * Write an item to the cache. + * + * @param string $key + * @param mixed $value + * @param int $minutes + * @return void + */ + public function put($key, $value, $minutes) + { + apc_store($key, $value, $minutes * 60); + } + + /** + * Delete an item from the cache. + * + * @param string $key + * @return void + */ + public function forget($key) + { + apc_delete($key); + } + +} \ No newline at end of file diff --git a/system/cache/factory.php b/system/cache/factory.php index 227d906c..245f4c85 100644 --- a/system/cache/factory.php +++ b/system/cache/factory.php @@ -18,6 +18,9 @@ public static function make($driver) case 'memcached': return new Driver\Memcached; + case 'apc': + return new Driver\APC; + default: throw new \Exception("Cache driver [$driver] is not supported."); }