voku/simple-cache

4.1.0 2022-12-20 11:05 UTC

README

Build Status FOSSA Status Coverage Status Scrutinizer Code Quality Codacy Badge Latest Stable Version Total Downloads License Donate to this project using Paypal Donate to this project using Patreon

⚡ 简单缓存类

这是一个为PHP >= 7.0提供的简单缓存抽象层,它允许您以简单的方式与缓存服务器交互。您可以在构造函数中定义适配器/序列化器,或者类将按此顺序自动检测您的服务器缓存:

  1. Memcached / Memcache
  2. Redis
  3. Xcache
  4. APC / APCu
  5. OpCache (通过PHP文件)
  6. 静态-PHP-Cache

获取"Simple Cache"

您可以从这里下载,或者使用composer进行安装。

{
  "require": {
    "voku/simple-cache": "4.*"
  }
}

通过"composer require"安装

composer require voku/simple-cache

快速开始

use voku\cache\Cache;

require_once 'composer/autoload.php';

$cache = new Cache();
$ttl = 3600; // 60s * 60 = 1h
$cache->setItem('foo', 'bar', $ttl);
$bar = $cache->getItem('foo');

用法

use voku\cache\Cache;

$cache = new Cache();
  
if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) {
  return $cache->getItem('foo');
} else {
  $bar = someSpecialFunctionsWithAReturnValue();
  $cache->setItem('foo', $bar);
  return $bar;
}

如果您有一个重型任务,例如一个非常大的循环,那么您也可以使用静态缓存。但请注意,这将存储在PHP中(它需要更多的内存)。

use voku\cache\Cache;

$cache = new Cache();
  
if ($cache->getCacheIsReady() === true && $cache->existsItem('foo')) {
  for ($i = 0; $i <= 100000; $i++) {
    echo $this->cache->getItem('foo', 3); // use also static-php-cache, when we hit the cache 3-times
  }
  return $cache->getItem('foo');
} else {
  $bar = someSpecialFunctionsWithAReturnValue();
  $cache->setItem('foo', $bar);
  return $bar;
}

PS:默认情况下,静态缓存也用于>= 10次缓存命中。但您可以通过$cache->setStaticCacheHitCounter(INT)来配置此行为。

管理员或特定IP地址的无缓存

如果您在构造函数中使用参数"$checkForUser"(=== true),则缓存不会用于管理员会话。

-> 您还可以通过添加名为"checkForDev()"的全局函数来覆盖对用户的检查。

覆盖自动连接选项

您可以通过"CacheAdapterAutoManager"和"Cache"-构造函数中的"$cacheAdapterManagerForAutoConnect"选项来覆盖缓存自动检测。此外,您还可以在"Cache"-构造函数中激活"$cacheAdapterManagerForAutoConnectOverwrite"选项,这样您就可以实现自己的缓存自动检测逻辑。

$cacheManager = new \voku\cache\CacheAdapterAutoManager();

// 1. check for "APCu" support first
$cacheManager->addAdapter(
    \voku\cache\AdapterApcu::class
);

// 2. check for "APC" support
$cacheManager->addAdapter(
    \voku\cache\AdapterApcu::class
);

// 3. try "OpCache"-Cache
$cacheManager->addAdapter(
    \voku\cache\AdapterOpCache::class,
    static function () {
        $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_opcache';

        return $cacheDir;
    }
);

// 4. try "File"-Cache
$cacheManager->addAdapter(
    \voku\cache\AdapterFileSimple::class,
    static function () {
        $cacheDir = \realpath(\sys_get_temp_dir()) . '/simple_php_cache_file';

        return $cacheDir;
    }
);


// 5. use Memory Cache as final fallback
$cacheManager->addAdapter(
    \voku\cache\AdapterArray::class
);

$cache = new \voku\cache\CachePsr16(
    null, // use auto-detection
    null, // use auto-detection
    false, // do not check for usage
    true, // enable the cache
    false, // do not check for admin session
    false, // do not check for dev
    false, // do not check for admin session
    false, // do not check for server vs. client ip
    '', // do not use "_GET"-parameter for disabling
    $cacheManager, // new auto-detection logic
    true // overwrite the auto-detection logic
);

支持

有关支持和捐款,请访问Github | 问题 | PayPal | Patreon

有关状态更新和发布公告,请访问发布 | Twitter | Patreon

有关专业支持,请联系

感谢

  • 感谢GitHub(微软)为我们托管代码和良好的基础设施,包括问题管理等。
  • 感谢IntelliJ,他们制作了最好的PHP IDE,并给了我PhpStorm的开源许可证!
  • 感谢Travis CI,它是最好的,最简单的持续集成工具!
  • 感谢StyleCI,它提供了简单但强大的代码风格检查。
  • 感谢PHPStanPsalm,它们提供了真正出色的静态分析工具,并帮助我们在代码中发现了错误!

许可

FOSSA Status