*/
class Cache
{
- var $_items = array();
+ /**
+ * @var array additional in-process cache for web requests;
+ * disabled on CLI, unsafe for long-running daemons
+ */
+ var $_items = array();
+ var $_inlineCache = true;
static $_inst = null;
const COMPRESSED = 1;
+ private function __construct() {
+ // Potentially long-running daemons or maintenance scripts
+ // should not use an in-process cache as it becomes out of
+ // date.
+ $this->_inlineCache = (php_sapi_name() != 'cli');
+ }
+
/**
* Singleton constructor
*
$base_key = common_config('cache', 'base');
if (empty($base_key)) {
- $base_key = common_keyize(common_config('site', 'name'));
+ $base_key = self::keyize(common_config('site', 'name'));
}
- return 'statusnet:' . $base_key . ':' . $extra;
+ return 'gnusocial:' . $base_key . ':' . $extra;
}
/**
if (empty($prefix)) {
- $plugins = StatusNet::getActivePlugins();
- $names = array();
+ $names = array();
- foreach ($plugins as $plugin) {
- $names[] = $plugin[0];
+ foreach (StatusNet::getActivePlugins() as $plugin=>$attrs) {
+ $names[] = $plugin;
}
- $names = array_unique($names);
asort($names);
// Unique enough.
$build = common_config('site', 'build');
- $prefix = STATUSNET_VERSION.':'.$build.':'.$uniq;
+ $prefix = GNUSOCIAL_VERSION.':'.$build.':'.$uniq;
}
return Cache::key($prefix.':'.$extra);
common_perf_counter('Cache::get', $key);
if (Event::handle('StartCacheGet', array(&$key, &$value))) {
- if (array_key_exists($key, $this->_items)) {
+ if ($this->_inlineCache && array_key_exists($key, $this->_items)) {
$value = unserialize($this->_items[$key]);
}
Event::handle('EndCacheGet', array($key, &$value));
if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
&$expiry, &$success))) {
- $this->_items[$key] = serialize($value);
+ if ($this->_inlineCache) {
+ $this->_items[$key] = serialize($value);
+ }
$success = true;
common_perf_counter('Cache::delete', $key);
if (Event::handle('StartCacheDelete', array(&$key, &$success))) {
- if (array_key_exists($key, $this->_items)) {
+ if ($this->_inlineCache && array_key_exists($key, $this->_items)) {
unset($this->_items[$key]);
}
$success = true;