Метод 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,
который предоставляет основные методы работы с кэшем