РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
841 of 1361 menu

Адаптер FilesystemAdapter

Класс FilesystemAdapter реализует интерфейс AdapterInterface и сохраняет элементы кеша в виде файлов на диске. Это самый простой адаптер, который не требует установки дополнительных расширений или серверов. Первым параметром передаётся директория для хранения файлов кеша, вторым - время жизни элемента в секундах, третьим - права доступа к создаваемым файлам. Если директория не указана, используется временная папка системы.

Синтаксис

new FilesystemAdapter( string $namespace = '', int $defaultLifetime = 0, string $directory = null )

Пример

Давайте создадим адаптер и сохраним в кеш значение по ключу 'user':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Cache\Adapter\FilesystemAdapter; class CacheController extends AbstractController { public function index(): Response { $cache = new FilesystemAdapter(); $item = $cache->getItem('user'); $item->set('abcde'); $cache->save($item); $res = $cache->getItem('user')->get(); return new Response($res); } } ?>

Результат выполнения кода:

abcde

Пример

Давайте укажем директорию для файлов кеша и время жизни элемента:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Cache\Adapter\FilesystemAdapter; class CacheController extends AbstractController { public function index(): Response { $cache = new FilesystemAdapter( 'app', 3600, $this->getParameter('kernel.cache_dir') ); $item = $cache->getItem('article'); $item->set('hello'); $item->expiresAfter(3600); $cache->save($item); $res = $cache->getItem('article')->get(); return new Response($res); } } ?>

Результат выполнения кода:

hello

Пример

Давайте проверим наличие элемента в кеше с помощью метода hasItem:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Cache\Adapter\FilesystemAdapter; class CacheController extends AbstractController { public function index(): Response { $cache = new FilesystemAdapter(); $item = $cache->getItem('user'); $item->set('abcde'); $cache->save($item); $res = $cache->hasItem('user'); return new Response($res ? 'true' : 'false'); } } ?>

Результат выполнения кода:

true

Пример

Давайте удалим элемент из кеша с помощью метода deleteItem:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Cache\Adapter\FilesystemAdapter; class CacheController extends AbstractController { public function index(): Response { $cache = new FilesystemAdapter(); $item = $cache->getItem('user'); $item->set('abcde'); $cache->save($item); $cache->deleteItem('user'); $res = $cache->hasItem('user'); return new Response($res ? 'true' : 'false'); } } ?>

Результат выполнения кода:

false

Смотрите также

  • класс Cache,
    который предоставляет удобный фасад для работы с кешем
  • метод getItem,
    который возвращает элемент кеша по ключу
  • метод save,
    который сохраняет элемент кеша в хранилище
  • адаптер RedisAdapter,
    который хранит кеш в Redis
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить