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 = new Application($this->kernel);
$application->setAutoExit(false); $application->setAutoExit(false);
$output = new BufferedOutput();
$input = new ArrayInput([ $input = new ArrayInput([
'command' => 'cache:clear', '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); $application->run($input, $output);
} }
} }

View file

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

View file

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

View file

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