diff --git a/system/cache/driver/apc.php b/system/cache/driver/apc.php new file mode 100644 index 000000000..54ba93041 --- /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(\System\Config::get('cache.key').$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(\System\Config::get('cache.key').$key, $value, $minutes * 60); + } + + /** + * Delete an item from the cache. + * + * @param string $key + * @return void + */ + public function forget($key) + { + apc_delete(\System\Config::get('cache.key').$key); + } + +} \ No newline at end of file diff --git a/system/cache/factory.php b/system/cache/factory.php index 227d906c7..245f4c856 100644 --- a/system/cache/factory.php +++ b/system/cache/factory.php @@ -18,6 +18,9 @@ class Factory { case 'memcached': return new Driver\Memcached; + case 'apc': + return new Driver\APC; + default: throw new \Exception("Cache driver [$driver] is not supported."); }