96 lines
1.6 KiB
PHP
96 lines
1.6 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Simple Machines Forum (SMF)
|
||
|
*
|
||
|
* @package SMF
|
||
|
* @author Simple Machines https://www.simplemachines.org
|
||
|
* @copyright 2022 Simple Machines and individual contributors
|
||
|
* @license https://www.simplemachines.org/about/smf/license.php BSD
|
||
|
*
|
||
|
* @version 2.1.0
|
||
|
*/
|
||
|
|
||
|
namespace SMF\Cache\APIs;
|
||
|
|
||
|
use SMF\Cache\CacheApi;
|
||
|
use SMF\Cache\CacheApiInterface;
|
||
|
|
||
|
if (!defined('SMF'))
|
||
|
die('No direct access...');
|
||
|
|
||
|
/**
|
||
|
* Our Cache API class
|
||
|
*
|
||
|
* @package CacheAPI
|
||
|
*/
|
||
|
class Apcu extends CacheApi implements CacheApiInterface
|
||
|
{
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function isSupported($test = false)
|
||
|
{
|
||
|
$supported = function_exists('apcu_fetch') && function_exists('apcu_store');
|
||
|
|
||
|
if ($test)
|
||
|
return $supported;
|
||
|
|
||
|
return parent::isSupported() && $supported;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function connect()
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function getData($key, $ttl = null)
|
||
|
{
|
||
|
$key = $this->prefix . strtr($key, ':/', '-_');
|
||
|
|
||
|
$value = apcu_fetch($key . 'smf');
|
||
|
|
||
|
return !empty($value) ? $value : null;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function putData($key, $value, $ttl = null)
|
||
|
{
|
||
|
$key = $this->prefix . strtr($key, ':/', '-_');
|
||
|
|
||
|
// An extended key is needed to counteract a bug in APC.
|
||
|
if ($value === null)
|
||
|
return apcu_delete($key . 'smf');
|
||
|
|
||
|
else
|
||
|
return apcu_store($key . 'smf', $value, $ttl !== null ? $ttl : $this->ttl);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function cleanCache($type = '')
|
||
|
{
|
||
|
$this->invalidateCache();
|
||
|
|
||
|
return apcu_clear_cache();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* {@inheritDoc}
|
||
|
*/
|
||
|
public function getVersion()
|
||
|
{
|
||
|
return phpversion('apcu');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|