Мое приложение продолжает загружаться после попытки очистки FilesystemCache - PullRequest
1 голос
/ 10 марта 2020

У меня есть приложение, которое работает на Symfony 4 . Я использую компонент кэша файловой системы. Я хотел создать функцию, которая очищает ее, но, к сожалению, все мое приложение теперь не работает. Все страницы будут загружаться вечно.

enter image description here

Ниже сценария, который я выполнил:

<?php

namespace App\Controller\Admin;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Cache\Simple\FilesystemCache;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;

use App\Entity\Instelling;

class AdminInstellingController extends AbstractController
{
    /**
     * @Route("/beheer/cache-clear")
     */
    public function clearCache()
    {
        $cache = new FilesystemCache();
        $cache->clear();

        $this->addFlash("success", "De <strong>CRM DataServer</strong> cache is succesvol geleegd.");
       // return $this->redirect('/beheer/dashboard');
    }
}

Я удалил свой Папка var / cache, моя временная папка, в которой этот кеш хранится по умолчанию ( sys_get_temp_dir ), переустанавливал моих поставщиков, очищал мои куки и кеш и перезагружал мой компьютер. Ничто не работает вообще, и приложение продолжает загружаться. Что мне нужно сделать, чтобы решить эту проблему?

Ответы [ 2 ]

1 голос
/ 10 марта 2020

Это не очень хороший способ очистить кеш изнутри контроллера. Вам нужно создать команду и очистить кеш через командную строку

php bin/console make:command app:clear-filesystem-cache

и записать в нее функцию очистки кэша

protected function execute(InputInterface $input, OutputInterface $output): int
{
    $io = new SymfonyStyle($input, $output);

    $cache = new FilesystemCache();
    $cache->clear();

    $io->success('De CRM DataServer cache is succesvol geleegd.');

    return 0;
}

Затем очистить кэш с помощью этой команды.

php bin/console app:clear-filesystem-cache

Если вы хотите добиться этого в контроллере, увеличьте max-execution-time в php .ini до более чем 30 секунд.

0 голосов
/ 10 марта 2020

Лучший способ - реализовать консольную команду, но для быстрого тестирования можно просто изменить ограничение по времени непосредственно в контроллере по сравнению с глобальным изменением в php .ini:

public function clearCache()
{
  //  set_time_limit ( int $seconds ) : bool
  set_time_limit(300);
  //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...