simple-machines-forum/Sources/Cache/APIs/Apcu.php

96 lines
No EOL
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');
}
}
?>