Open Journal Systems  3.3.0
CacheManager.inc.php
Go to the documentation of this file.
1 <?php
2 
17 import('lib.pkp.classes.cache.FileCache');
18 
19 define('CACHE_TYPE_FILE', 1);
20 define('CACHE_TYPE_OBJECT', 2);
21 
22 class CacheManager {
27  static function getManager() {
28  $manager =& Registry::get('cacheManager', true, null);
29  if ($manager === null) {
30  $manager = new CacheManager();
31  }
32  return $manager;
33  }
34 
42  function getFileCache($context, $cacheId, $fallback) {
43  return new FileCache(
44  $context, $cacheId, $fallback,
45  $this->getFileCachePath()
46  );
47  }
48 
49  function getObjectCache($context, $cacheId, $fallback) {
50  return $this->getCache($context, $cacheId, $fallback, CACHE_TYPE_OBJECT);
51  }
52 
53  function getCacheImplementation($type) {
54  switch ($type) {
55  case CACHE_TYPE_FILE: return 'file';
56  case CACHE_TYPE_OBJECT: return Config::getVar('cache', 'object_cache');
57  default: return null;
58  }
59  }
60 
69  function getCache($context, $cacheId, $fallback, $type = CACHE_TYPE_FILE) {
70  switch ($this->getCacheImplementation($type)) {
71  case 'xcache':
72  import('lib.pkp.classes.cache.XCacheCache');
73  $cache = new XCacheCache(
74  $context, $cacheId, $fallback
75  );
76  break;
77  case 'apc':
78  import('lib.pkp.classes.cache.APCCache');
79  $cache = new APCCache(
80  $context, $cacheId, $fallback
81  );
82  break;
83  case 'memcache':
84  import('lib.pkp.classes.cache.MemcacheCache');
85  $cache = new MemcacheCache(
86  $context, $cacheId, $fallback,
87  Config::getVar('cache','memcache_hostname'),
88  Config::getVar('cache','memcache_port')
89  );
90  break;
91  case '': // Provide a default if not specified
92  case 'file':
93  $cache = $this->getFileCache($context, $cacheId, $fallback);
94  break;
95  case 'none':
96  import('lib.pkp.classes.cache.GenericCache');
97  $cache = new GenericCache(
98  $context, $cacheId, $fallback
99  );
100  break;
101  default:
102  die ("Unknown cache type \"$type\"!\n");
103  break;
104  }
105  return $cache;
106  }
107 
112  static function getFileCachePath() {
113  return Core::getBaseDir() . DIRECTORY_SEPARATOR . 'cache';
114  }
115 
122  function flush($context = null, $type = CACHE_TYPE_FILE) {
123  $cacheImplementation = $this->getCacheImplementation($type);
124  switch ($cacheImplementation) {
125  case 'xcache':
126  case 'apc':
127  case 'memcache':
128  $junkCache = $this->getCache($context, null, null);
129  $junkCache->flush();
130  break;
131  case 'file':
132  $filePath = $this->getFileCachePath();
133  $files = glob($filePath . DIRECTORY_SEPARATOR . 'fc-' . (isset($context)?$context . '-':'') . '*.php');
134  foreach ($files as $file) {
135  @unlink ($file);
136  }
137  break;
138  case '':
139  case 'none':
140  // Nothing necessary.
141  break;
142  default:
143  die ("Unknown cache type \"$cacheType\"!\n");
144  }
145  }
146 }
147 
148 
APCCache
Provides caching based on APC's variable store.
Definition: APCCache.inc.php:22
CacheManager\getFileCachePath
static getFileCachePath()
Definition: CacheManager.inc.php:112
CacheManager\flush
flush($context=null, $type=CACHE_TYPE_FILE)
Definition: CacheManager.inc.php:122
MemcacheCache
Provides caching based on Memcache.
Definition: MemcacheCache.inc.php:29
FileCache
Provides caching based on machine-generated PHP code on the filesystem.
CacheManager\getManager
static getManager()
Definition: CacheManager.inc.php:27
Registry\get
static & get($key, $createIfEmpty=false, $createWithDefault=null)
Definition: Registry.inc.php:35
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
CACHE_TYPE_FILE
const CACHE_TYPE_FILE
Definition: CacheManager.inc.php:19
CacheManager\getFileCache
getFileCache($context, $cacheId, $fallback)
Definition: CacheManager.inc.php:42
CacheManager\getCache
getCache($context, $cacheId, $fallback, $type=CACHE_TYPE_FILE)
Definition: CacheManager.inc.php:69
CacheManager\getCacheImplementation
getCacheImplementation($type)
Definition: CacheManager.inc.php:53
Core\getBaseDir
static getBaseDir()
Definition: Core.inc.php:37
XCacheCache
Provides caching based on XCache's variable store.
Definition: XCacheCache.inc.php:20
GenericCache
Provides implementation-independent caching. Although this class is intended to be overridden with a ...
Definition: GenericCache.inc.php:23
CacheManager\getObjectCache
getObjectCache($context, $cacheId, $fallback)
Definition: CacheManager.inc.php:49
CACHE_TYPE_OBJECT
const CACHE_TYPE_OBJECT
Definition: CacheManager.inc.php:20
CacheManager
Definition: CacheManager.inc.php:22