update cache management (cache:clear is not a solution)

This commit is contained in:
Simon Vieille 2021-04-04 20:09:16 +02:00
parent aa34464f71
commit 2de1c8ddaa
4 changed files with 21 additions and 13 deletions

View File

@ -40,12 +40,21 @@ class SymfonyCacheManager
{
$application = new Application($this->kernel);
$application->setAutoExit(false);
$output = new BufferedOutput();
$input = new ArrayInput([
'command' => 'cache:clear',
'-e' => $this->kernel->getEnvironment(),
'--no-warmup' => null,
]);
$application->run($input, $output);
$input = new ArrayInput([
'command' => 'cache:warmup',
'-e' => $this->kernel->getEnvironment(),
]);
$output = new BufferedOutput();
$application->run($input, $output);
}
}

View File

@ -12,15 +12,17 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
*/
abstract class EntityManagerEventSubscriber implements EventSubscriberInterface
{
static protected int $priority = 0;
public static function getSubscribedEvents()
{
return [
EntityManagerEvent::CREATE_EVENT => 'onCreate',
EntityManagerEvent::UPDATE_EVENT => 'onUpdate',
EntityManagerEvent::DELETE_EVENT => 'onDelete',
EntityManagerEvent::PRE_CREATE_EVENT => 'onPreCreate',
EntityManagerEvent::PRE_UPDATE_EVENT => 'onPreUpdate',
EntityManagerEvent::PRE_DELETE_EVENT => 'onPreDelete',
EntityManagerEvent::CREATE_EVENT => ['onCreate', self::$priority],
EntityManagerEvent::UPDATE_EVENT => ['onUpdate', self::$priority],
EntityManagerEvent::DELETE_EVENT => ['onDelete', self::$priority],
EntityManagerEvent::PRE_CREATE_EVENT => ['onPreCreate', self::$priority],
EntityManagerEvent::PRE_UPDATE_EVENT => ['onPreUpdate', self::$priority],
EntityManagerEvent::PRE_DELETE_EVENT => ['onPreDelete', self::$priority],
];
}

View File

@ -88,7 +88,7 @@ class MenuEventSubscriber extends EntityManagerEventSubscriber
$this->nodeRepository->persistAsFirstChild($childNode, $rootNode);
$this->cacheManager->cleanAll();
$this->cacheManager->cleanRouting();
}
public function onUpdate(EntityManagerEvent $event)

View File

@ -21,6 +21,7 @@ class SiteEventSubscriber extends EntityManagerEventSubscriber
{
protected KernelInterface $kernel;
protected SymfonyCacheManager $cacheManager;
static protected int $priority = -1;
public function __construct(KernelInterface $kernel, SymfonyCacheManager $cacheManager)
{
@ -39,11 +40,7 @@ class SiteEventSubscriber extends EntityManagerEventSubscriber
return;
}
if ($event->getEntity() instanceof Node) {
$this->cacheManager->cleanRouting();
} else {
$this->cacheManager->cleanAll();
}
$this->cacheManager->cleanRouting();
}
public function onCreate(EntityManagerEvent $event)