lmammino/guzzle-apcu-fs-cache

为guzzle-cache-middleware提供的零配置缓存存储,尝试在Apcu上缓存并回退到文件系统

v1.0.0 2020-04-01 17:00 UTC

This package is auto-updated.

Last update: 2024-09-19 22:20:09 UTC


README

为guzzle-cache-middleware提供的零配置缓存存储,尝试在Apcu上缓存并回退到文件系统。

Tests Latest Stable Version Total Downloads Latest Unstable Version License composer.lock

安装

需要PHP 5.5+。

使用composer

composer require lmammino/guzzle-apcu-fs-cache

用法

以下是一个如何使用此存储引擎与GuzzleGuzzleCacheMiddleware一起使用的示例

<?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(返回truefalse
  • $storage->usingFilesystem(返回truefalse

理由和备注

最初创建此项目是为了更受控和可配置地缓存Launch Darkly客户端发出的请求。

注意:此中间件将始终尊重您提供的TTL,并忽略作为响应返回的任何HTTP缓存头。这是设计使然。仅当您想强制缓存或用于微缓存场景(例如,非常昂贵且频繁的API调用)时才使用此中间件。

贡献

每个人都非常欢迎为此项目做出贡献。您可以通过在GitHub上提交问题或提出改进建议来做出贡献。

许可证

根据MIT许可证授权。© Luciano Mammino。