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 constructor takes two arguments: the ordered list of adapters
used to fetch cached items and, optionally, the default lifetime (in seconds)
applied to the items propagated from lower adapters to upper ones (default: 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, respectively:
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:
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();