LuckyCoinkydink/lib/LuckyCoin/ContentCache.php

78 lines
1.8 KiB
PHP

<?php
// 幸運な偶然 - Lucky Coinkydink
// See LICENSE file for license information.
namespace LuckyCoin;
use LuckyCoin\ConfigContainer;
use voku\cache\Cache;
use voku\cache\CacheAdapterAutoManager;
use voku\cache\AdapterArray;
use voku\cache\AdapterOpCache;
class ContentCache
{
protected static $instance = null;
protected $cache_manager;
protected $cache;
public static function getInstance()
{
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
private function __construct()
{
// Configure voku/simple-cache to use templates_c as directory for the opcache files, the fallback
// when Memcached and Redis are not used.
$cfg = ConfigContainer::getInstance();
$cacheDir = $cfg->get('serendipityPath') . '/templates_c/simple_cache';
$this->cache_manager = new CacheAdapterAutoManager();
$this->cache_manager->addAdapter(
AdapterOpCache::class,
static function () use ($cacheDir) {
return $cacheDir;
}
);
$this->cache_manager->addAdapter(
AdapterArray::class
);
$this->cache = new Cache(
null,
null,
false,
true,
false,
false,
false,
false,
'',
$this->cache_manager,
false
);
}
public function addItem($key, $item, $ttl = 3600)
{
return $this->cache->setItem($key, $item, $ttl);
}
public function getItem($key)
{
return $this->cache->getItem($key);
}
public function clearCache()
{
return $this->cache->removeAll();
}
}