Chain Cache Adapter

This adapter allows combining any number of the other available cache adapters. Cache items are fetched from the first adapter containing them and cache items are saved to all the given adapters. This exposes a simple and efficient method for creating a layered cache.

このアダプターを使用すると、他の使用可能なキャッシュ アダプターをいくつでも組み合わせることができます。キャッシュ アイテムは、それらを含む最初のアダプタから取得され、キャッシュ アイテムは指定されたすべてのアダプタに保存されます。これにより、階層化されたキャッシュを作成するためのシンプルで効率的な方法が公開されます。

The ChainAdapter must be provided an array of adapters and optionally a default cache lifetime as its constructor arguments:

ChainAdapter には、アダプターの配列と、オプションでコンストラクター引数としてデフォルトのキャッシュライフタイムを提供する必要があります。
1
2
3
4
5
6
7
8
9
use Symfony\Component\Cache\Adapter\ChainAdapter;

$cache = new ChainAdapter(
    // The ordered list of adapters used to fetch cached items
    array $adapters,

    // The default lifetime of items propagated from lower adapters to upper ones
    $defaultLifetime = 0
);

Note

ノート

When an item is not found in the first adapter but is found in the next ones, this adapter ensures that the fetched item is saved to all the adapters where it was previously missing.

アイテムが最初のアダプターで見つからず、次のアダプターで見つかった場合、このアダプターは、フェッチされたアイテムが以前に欠落していたすべてのアダプターに確実に保存されるようにします。

The following example shows how to create a chain adapter instance using the fastest and slowest storage engines, ApcuAdapter and FilesystemAdapter, respectfully:

次の例は、最速および最低のストレージ エンジンである ApcuAdapter と FilesystemAdapter を慎重に使用して、チェーン アダプター インスタンスを作成する方法を示しています。
1
2
3
4
5
6
7
8
use Symfony\Component\Cache\Adapter\ApcuAdapter;
use Symfony\Component\Cache\Adapter\ChainAdapter;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$cache = new ChainAdapter([
    new ApcuAdapter(),
    new FilesystemAdapter(),
]);

When calling this adapter's prune() method, the call is delegated to all its compatible cache adapters. It is safe to mix both adapters that do and do not implement PruneableInterface, as incompatible adapters are silently ignored:

このアダプターの prune() メソッドを呼び出すと、その呼び出しは互換性のあるすべてのキャッシュ アダプターに委任されます。 PruneableInterface を実装するアダプタと実装しないアダプタの両方を混在させても安全です。互換性のないアダプタは黙って無視されるからです。
1
2
3
4
5
6
7
8
9
10
11
use Symfony\Component\Cache\Adapter\ApcuAdapter;
use Symfony\Component\Cache\Adapter\ChainAdapter;
use Symfony\Component\Cache\Adapter\FilesystemAdapter;

$cache = new ChainAdapter([
    new ApcuAdapter(),        // does NOT implement PruneableInterface
    new FilesystemAdapter(),  // DOES implement PruneableInterface
]);

// prune will proxy the call to FilesystemAdapter while silently skip ApcuAdapter
$cache->prune();