Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony2][Symfony]Czyszczenie cache - programowo
borpaw
post 13.01.2016, 09:28:54
Post #1





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Witam

Potrzebuję wyczyścić cache po edycji dokumentu, jak to programowo zrobić? Jest takie zdarzenie np: dla listenera gdzie po zapisie mogę cache wyczyścić? Może ktoś podpowie jak i gdzie to najlepiej zrobić?

Mam takie funkcje do tego:

  1. function clearUrlCache() {
  2.  
  3. $fs = new Filesystem();
  4.  
  5. $fs->remove($this->container->getParameter('kernel.cache_dir') . "/appProdUrlGenerator.php");
  6. $fs->remove($this->container->getParameter('kernel.cache_dir') . "/appProdUrlMatcher.php");
  7.  
  8. $fs->remove($this->container->getParameter('kernel.cache_dir') . "/appDevUrlGenerator.php");
  9. $fs->remove($this->container->getParameter('kernel.cache_dir') . "/appDevUrlMatcher.php");
  10. }


I potem w użyciu:

  1. $this->clearUrlCache();
  2. exec('php app/console cache:clear --env=prod --no-debug');
  3. exec('php app/console cache:clear --env=dev --no-debug');
Go to the top of the page
+Quote Post
Crozin
post 13.01.2016, 10:26:03
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dlaczego edycja jakiegoś dokumentu (właśnie, jakiego?) wymaga wyczyszczenia całego cache'a? Możesz opisać dokładnie co chcesz zrobić?
Go to the top of the page
+Quote Post
borpaw
post 13.01.2016, 11:37:50
Post #3





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Dlatego, że podczas tworzenia dokumentu tworzy się dynamiczny route, widać go w routeCollection ale strona korzysta z cache i nie widzi nowej ścieżki dopiero po wyczyszczeniu cache jest ok. Dlatego pomyślałem że ytrzeba by cache czyścić w takim przypadku, nie mogę znaleźć innego rozwiązania w sieci.
Go to the top of the page
+Quote Post
Crozin
post 13.01.2016, 13:15:56
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dynamiczne generowanie wpisu do konfiguracji routingu wydaje się bardzo, bardzo złym rozwiązaniem. Możesz opisać jakie adresy chciałbyś uzyskać? Dlaczego nie możesz puścić tego przez jedną akcję, która na podstawie URL-a zdecyduje, który dokument wczytać?
Go to the top of the page
+Quote Post
borpaw
post 13.01.2016, 13:39:58
Post #5





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


scieżki są generowane z bazy, używam loadera scieżek opisanego w dokuentacji tyle, że on działa tylko raz po usunięciu keszu, może wiesz co zrobić żeby loader działał po jakimś zdarzeniu?
Go to the top of the page
+Quote Post
Crozin
post 13.01.2016, 13:45:00
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Wygląda mi na to, że mamy tutaj do czynienia z problemem XY. ;-)

Napisz co chciałbyś finalnie osiągnąć, a nie z czym masz problemem? Domyślam się, że masz n dokumentów, każdy pod adresem domena.com/dokument-a, domena.com/dokument-b, domena.com/dokument-c, a po dodaniu nowego dokumentu chcesz by był dostępny pod adresem domena.com/nowy-dokument? Dlaczego nie stworzysz po prostu jednej akcji domena.com/{nazwa-dokumentu}, która go wczyta?
Go to the top of the page
+Quote Post
borpaw
post 13.01.2016, 14:05:40
Post #7





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Chodzi o to że jak utworzę dokument to ma się dla niego stworzyć ścieżka taka tylko dla niego, tam jest jego controller, template jakieś inne parametry.
A jak zrobię ścieżkę typu domena.pl/firma/{_slug} to dla wszystkich dokumentów mam to samo. Dlatego nie mogę przewidzieć co wpisać na sztywno do np: routing.yml i potem to wskazywać tylko dokumentowi.

Mam interfejs gdzie tworzę sobie ścieżki zapisuję do bazy i potem wskazuje dokumentowi taką ścieżkę, i cały ambaras jest o to, że to nie trafia do keszu bo loader działa tylko raz, dopiero jak się kesz usunie to zasysa ścieżki. Tak to wygląda mniej więcej

Go to the top of the page
+Quote Post
destroyerr
post 13.01.2016, 15:26:03
Post #8





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Nie wiem co chcesz robić ale wygląda to tak jakbyś chciał żeby excel dokonywał rekompilacji źródeł po wpisaniu formuły w komórce.
Nie rozumiem Twojej aplikacji ale radzę się zastanowić, czy nie lepiej nadpisać Router (inspiracji szukaj w Symfony CMF).
Go to the top of the page
+Quote Post
Crozin
post 13.01.2016, 15:32:41
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Czy mógłbyś pokazać taki przykładowy kontroler/szablon/parametry dla 2-3 dokumentów?
Go to the top of the page
+Quote Post
borpaw
post 14.01.2016, 10:04:19
Post #10





Grupa: Zarejestrowani
Postów: 439
Pomógł: 0
Dołączył: 3.06.2010

Ostrzeżenie: (50%)
XXX--


Tutaj jest odpowiedź jak zrobić dynamic router, który reaguje na każdą zmianę bez czyszczenia cache.
http://marcjschmidt.de/blog/2013/11/30/sym...mic-router.html

Dodanych ścieżek nie widać pod debug:router, nie wiem jak podglądać wyniki działania. Czy to trzeba jakoś połączyć z routerem symfonowym?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2025 - 05:16