lainchan/inc/cache.php

123 lines
2.4 KiB
PHP
Raw Normal View History

2011-10-07 01:51:19 -04:00
<?php
2012-04-10 11:18:38 -04:00
2012-04-11 12:49:22 -04:00
/*
* Copyright (c) 2010-2012 Tinyboard Development Group
*/
2012-04-12 10:18:19 -04:00
if (realpath($_SERVER['SCRIPT_FILENAME']) == str_replace('\\', '/', __FILE__)) {
2012-04-11 12:49:22 -04:00
// You cannot request this file directly.
exit;
}
2012-04-10 11:18:38 -04:00
class Cache {
private static $cache;
public static function init() {
global $config;
2012-04-12 10:18:19 -04:00
switch ($config['cache']['enabled']) {
2012-04-10 11:18:38 -04:00
case 'memcached':
self::$cache = new Memcached();
self::$cache->addServers($config['cache']['memcached']);
break;
case 'php':
self::$cache = Array();
break;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
}
public static function get($key) {
global $config, $debug;
$key = $config['cache']['prefix'] . $key;
$data = false;
2012-04-12 10:18:19 -04:00
switch ($config['cache']['enabled']) {
2012-04-10 11:18:38 -04:00
case 'memcached':
2012-04-12 10:18:19 -04:00
if (!self::$cache)
2012-04-10 11:18:38 -04:00
self::init();
$data = self::$cache->get($key);
break;
case 'apc':
$data = apc_fetch($key);
break;
case 'xcache':
$data = xcache_get($key);
break;
case 'php':
$data = isset(self::$cache[$key]) ? self::$cache[$key] : false;
break;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
// debug
2012-04-12 10:18:19 -04:00
if ($data && $config['debug']) {
2012-04-10 11:18:38 -04:00
$debug['cached'][] = $key;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
return $data;
}
public static function set($key, $value, $expires = false) {
global $config;
$key = $config['cache']['prefix'] . $key;
2012-04-12 10:18:19 -04:00
if (!$expires)
2012-04-10 11:18:38 -04:00
$expires = $config['cache']['timeout'];
2012-04-12 10:18:19 -04:00
switch ($config['cache']['enabled']) {
2012-04-10 11:18:38 -04:00
case 'memcached':
2012-04-12 10:18:19 -04:00
if (!self::$cache)
2012-04-10 11:18:38 -04:00
self::init();
self::$cache->set($key, $value, $expires);
break;
case 'apc':
apc_store($key, $value, $expires);
break;
case 'xcache':
xcache_set($key, $value, $expires);
break;
case 'php':
self::$cache[$key] = $value;
break;
}
}
public static function delete($key) {
global $config;
$key = $config['cache']['prefix'] . $key;
2012-04-12 10:18:19 -04:00
switch ($config['cache']['enabled']) {
2012-04-10 11:18:38 -04:00
case 'memcached':
2012-04-12 10:18:19 -04:00
if (!self::$cache)
2012-04-10 11:18:38 -04:00
self::init();
self::$cache->delete($key);
break;
case 'apc':
apc_delete($key);
break;
case 'xcache':
xcache_unset($key);
break;
case 'php':
unset(self::$cache[$key]);
break;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
}
public static function flush() {
global $config;
2012-04-12 10:18:19 -04:00
switch ($config['cache']['enabled']) {
2012-04-10 11:18:38 -04:00
case 'memcached':
2012-04-12 10:18:19 -04:00
if (!self::$cache)
2012-04-10 11:18:38 -04:00
self::init();
return self::$cache->flush();
case 'apc':
return apc_clear_cache('user');
case 'php':
self::$cache[$key] = Array();
break;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
return false;
2011-10-07 01:51:19 -04:00
}
2012-04-10 11:18:38 -04:00
}