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

Метод commit класса Cache

Метод commit класса Cache применяет все отложенные операции кэша, которые были накоплены при помощи метода saveDeferred. Метод не принимает параметров и возвращает bool: true при успешном применении и false в случае ошибки. Обычно используется вместе с saveDeferred, когда нужно собрать несколько элементов и записать их одним пакетом.

Синтаксис

public function commit(): bool

Пример

Давайте отложим сохранение элемента при помощи saveDeferred и применим его через commit:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Cache\CacheInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(CacheInterface $cache): Response { $item = $cache->getItem('article_key'); $item->set('article'); $cache->saveDeferred($item); $res = $cache->commit(); return new Response(var_export($res, true)); } } ?>

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

true

Пример

Давайте отложим несколько элементов и применим их одной операцией:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Cache\CacheInterface; class ArticleController extends AbstractController { #[Route('/articles', name: 'article_list')] public function list(CacheInterface $cache): Response { foreach (['article 1', 'article 2', 'article 3'] as $key) { $item = $cache->getItem($key); $item->set($key); $cache->saveDeferred($item); } $res = $cache->commit(); return new Response(var_export($res, true)); } } ?>

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

true

Пример

Давайте проверим, что после commit элемент действительно доступен в кэше:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Contracts\Cache\CacheInterface; class ArticleController extends AbstractController { #[Route('/article/check', name: 'article_check')] public function check(CacheInterface $cache): Response { $item = $cache->getItem('user_key'); $item->set('user'); $cache->saveDeferred($item); $cache->commit(); $res = $cache->getItem('user_key')->get(); return new Response($res); } } ?>

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

user

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

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