summaryrefslogtreecommitdiff
path: root/inc/cache.php
diff options
context:
space:
mode:
authorSavetheinternet <savetheinternet@tinyboard.org>2011-10-07 16:51:19 +1100
committerSavetheinternet <savetheinternet@tinyboard.org>2011-10-07 16:51:19 +1100
commit555688e880b1bb50c13286b7d373ffd683847234 (patch)
tree2d6180a889b654a4c775a1879a43de0323dda7a1 /inc/cache.php
parent160647d196481e41ed2e2558221ff0a068a1f71e (diff)
memcached, APC, xcache
Diffstat (limited to 'inc/cache.php')
-rw-r--r--inc/cache.php95
1 files changed, 95 insertions, 0 deletions
diff --git a/inc/cache.php b/inc/cache.php
new file mode 100644
index 00000000..8909deaf
--- /dev/null
+++ b/inc/cache.php
@@ -0,0 +1,95 @@
+<?php
+ class Cache {
+ private static $cache;
+ public static function init() {
+ global $config;
+
+ switch($config['cache']['enabled']) {
+ case 'memcached':
+ self::$cache = new Memcached();
+ self::$cache->addServers($config['cache']['memcached']);
+ break;
+ }
+ }
+ public static function get($key) {
+ global $config, $debug;
+
+ if(!self::$cache)
+ self::init();
+
+ $data = false;
+ switch($config['cache']['enabled']) {
+ case 'memcached':
+ $data = self::$cache->get($key);
+ break;
+ case 'apc':
+ $data = apc_fetch($key);
+ break;
+ case 'xcache':
+ $data = xcache_get($key);
+ break;
+ }
+
+ // debug
+ if($data && $config['debug']) {
+ $debug['cached'][] = $key;
+ }
+
+ return $data;
+ }
+ public static function set($key, $value, $expires = false) {
+ global $config;
+
+ if(!self::$cache)
+ self::init();
+
+ if(!$expires)
+ $expires = $config['cache']['timeout'];
+
+ switch($config['cache']['enabled']) {
+ case 'memcached':
+ self::$cache->set($key, $value, $expires);
+ break;
+ case 'apc':
+ apc_store($key, $value, $expires);
+ break;
+ case 'xcache':
+ xcache_set($key, $value, $expires);
+ break;
+ }
+ }
+ public static function delete($key) {
+ global $config;
+
+ if(!self::$cache)
+ self::init();
+
+ switch($config['cache']['enabled']) {
+ case 'memcached':
+ self::$cache->delete($key);
+ break;
+ case 'apc':
+ apc_delete($key);
+ break;
+ case 'xcache':
+ xcache_unset($key);
+ break;
+ }
+ }
+ public static function flush() {
+ global $config;
+
+ if(!self::$cache)
+ self::init();
+
+ switch($config['cache']['enabled']) {
+ case 'memcached':
+ return self::$cache->flush();
+ case 'apc':
+ return apc_clear_cache();
+ }
+
+ return false;
+ }
+ }
+