Адаптер ланцюжку кешу
Дата оновлення перекладу 2023-08-15
Адаптер ланцюжку кешу
Цей адаптер дозволяє комбінувати будь-яку кількість інших доступних адаптерів кешу . Кешовані обʼєкти вилучаються з першого адаптера, що їх містить, і кешовані обʼєкти зберігаються у всі надані адаптери. Це надає простий та ефективний метод створення багатошарового кешу.
ChainAdapter необіхдно надати масив адаптерів і за бажанням максимальний час життя кешу, в якості аргументів конструктора:
1 2 3 4 5 6 7 8 9
use Symfony\Component\Cache\Adapter\ApcuAdapter;
$cache = new ChainAdapter(
// впорядкований список адаптерів, використаних для вилучення кешованих обʼєктів
array $adapters,
// максимальний час життя обʼєктів, розповсюджених з нижніх адаптерів у вищі
$maxLifetime = 0
);
Note
Если объект не найден в первом адаптере, но найден в следующих, этот адаптер гарантирует, что извлечённый объект сохранён во все адаптеры, где его ранее не хватало.
Наступний приклад демонструє, як створити екземпляр ланцюжку адаптерів, використовуючи найшвидшші та найповільніші системи зберігання, 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(),
]);
При виклику методу цього адаптера 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(array(
new ApcuAdapter(), // НЕ реалізує PruneableInterface
new FilesystemAdapter(), // РЕАЛІЗУЄ PruneableInterface
));
// prune проксує виклик у FilesystemAdapter, тихо пропустивши ApcuAdapter
$cache->prune();