lmammino / guzzle-apcu-fs-cache
为guzzle-cache-middleware提供的零配置缓存存储,尝试在Apcu上缓存并回退到文件系统
v1.0.0
2020-04-01 17:00 UTC
Requires
- php: >=5.6
- kevinrob/guzzle-cache-middleware: ~3.3
- symfony/cache: ~3.4
Requires (Dev)
- guzzlehttp/guzzle: ^6.5
- launchdarkly/server-sdk: ^3.7
- peridot-php/peridot: ^1.19
This package is auto-updated.
Last update: 2024-09-19 22:20:09 UTC
README
为guzzle-cache-middleware提供的零配置缓存存储,尝试在Apcu上缓存并回退到文件系统。
安装
需要PHP 5.5+。
使用composer
composer require lmammino/guzzle-apcu-fs-cache
用法
以下是一个如何使用此存储引擎与Guzzle和GuzzleCacheMiddleware一起使用的示例
<?php require_once __DIR__.'/vendor/autoload.php'; use GuzzleHttp\HandlerStack; use GuzzleHttp\Handler\CurlHandler; use GuzzleHttp\Client; use Kevinrob\GuzzleCache\CacheMiddleware; use Kevinrob\GuzzleCache\Strategy\PrivateCacheStrategy; use LM\GuzzleCache\Storage\ApcuFsStorage; // creates the storage (with default options) $cacheStorage = new ApcuFsStorage(); // creates the cache middleware $cacheMiddleware = new CacheMiddleware( new PrivateCacheStrategy($cacheStorage) ); // creates a Guzzle client middleware stack $stack = new HandlerStack(); $stack->setHandler(new CurlHandler()); $stack->push($cacheMiddleware, 'cache'); $client = new Client(['handler' => $stack]); // make a request $res = $client->request('GET', 'https://loige.co/'); // print response headers $headers = $res->getHeaders(); foreach ($headers as $k => $h) { foreach ($h as $v) { echo $k . ": " . $v . "\n"; } } // print response body echo "\n\n" . $res->getBody()->__toString() . "\n\n";
与Launch Darkly PHP SDK一起使用
如果您想使用此缓存存储与Launch Darkly PHP SDK,以下是操作方法
<?php require_once __DIR__.'/vendor/autoload.php'; use LaunchDarkly\LDClient; use LaunchDarkly\LDUser; use LM\GuzzleCache\Storage\ApcuFsStorage; $cacheStorage = new ApcuFsStorage(); $LDClient = new LDClient($ldSDKKey, ["cache" => $cacheStorage]); $LDUser = new LDUser("test@example.com"); // use the client var_dump($LDClient->variation('some-flag', $LDUser));
配置
在构造时可以配置存储层。
以下是构造函数接受的参数
- (string)
$dir
: 如果使用文件系统,缓存应保存的目录(默认:临时目录)。 - (string)
$namespace
: 缓存存储的命名空间,当使用多个实例且缓存不应混合时很有用。它将在文件系统中创建一个子文件夹,并在APC上创建一个前缀。(默认:'default'
)。 - (integer)
$ttl
缓存条目的持续时间(秒)(默认:60
)。 - (callable)
$onHit
当缓存命中时可选的函数。 - (callable)
$onMiss
当缓存未命中时可选的函数。
如果您想检查当前实例是否使用APC或文件系统,可以使用以下公共属性
$storage->usingApcu
(返回true
或false
)$storage->usingFilesystem
(返回true
或false
)
理由和备注
最初创建此项目是为了更受控和可配置地缓存Launch Darkly客户端发出的请求。
注意:此中间件将始终尊重您提供的TTL,并忽略作为响应返回的任何HTTP缓存头。这是设计使然。仅当您想强制缓存或用于微缓存场景(例如,非常昂贵且频繁的API调用)时才使用此中间件。
贡献
每个人都非常欢迎为此项目做出贡献。您可以通过在GitHub上提交问题或提出改进建议来做出贡献。
许可证
根据MIT许可证授权。© Luciano Mammino。