aboutsummaryrefslogtreecommitdiffstats
path: root/public/system/library/cache/apc.php
diff options
context:
space:
mode:
Diffstat (limited to 'public/system/library/cache/apc.php')
-rw-r--r--public/system/library/cache/apc.php33
1 files changed, 33 insertions, 0 deletions
diff --git a/public/system/library/cache/apc.php b/public/system/library/cache/apc.php
new file mode 100644
index 0000000..5acd778
--- /dev/null
+++ b/public/system/library/cache/apc.php
@@ -0,0 +1,33 @@
+<?php
+namespace Cache;
+class APC {
+ private $expire;
+ private $active = false;
+
+ public function __construct($expire) {
+ $this->expire = $expire;
+ $this->active = function_exists('apc_cache_info') && ini_get('apc.enabled');
+ }
+
+ public function get($key) {
+ return $this->active ? apc_fetch(CACHE_PREFIX . $key) : false;
+ }
+
+ public function set($key, $value) {
+ return $this->active ? apc_store(CACHE_PREFIX . $key, $value, $this->expire) : false;
+ }
+
+ public function delete($key) {
+ if (!$this->active) {
+ return false;
+ }
+
+ $cache_info = apc_cache_info('user');
+ $cache_list = $cache_info['cache_list'];
+ foreach ($cache_list as $entry) {
+ if (strpos($entry['info'], CACHE_PREFIX . $key) === 0) {
+ apcu_delete($entry['info']);
+ }
+ }
+ }
+}