2015-01-20 16 views
7

Trzymamy naszą pamięć podręczną doktryny w trybie redis i używamy capistrano do rozmieszczenia. Wszystko działa dobrze, dopóki nie będziemy musieli usunąć pola na encji.Wyczyść pamięć podręczną doktryn w pliku redis na wdrożenie

Gdy po zainstalowaniu polecenia w kompozytora są wykonywane otrzymujemy błąd jak:

[ReflectionException] ** [out Podmioty własności \ PlayerRecord :: $ shirtNumber nie istnieje

$shirtNumber jest pole, które usunęliśmy. Aby móc kontynuować, wystarczy wyczyścić pamięć podręczną doktryny, ale ponieważ jest ona w bazie danych redis, pamięć podręczna jest współdzielona z produkcją.

Pytanie brzmi, w jaki sposób możemy dynamicznie zmieniać ustawienia połączenia dla redisu przy każdym wdrożeniu? Jedyne pomysły, które przychodzą mi do głowy to:

  1. modyfikować parameters.yml na początku wdrażania
  2. zmiennym środowisku
  3. użycie która zmieni na każdy wdrożyć
  4. ruch Redis ustawieniach połączenia do innego pliku, który linku do jedna z konfiguracji

Czy masz inne pomysły lub która z nich jest lepsza w Twojej opinii?

+0

Ten problem został zgłoszony w http: //www.doctrine-project. org/jira/browse/DDC-3230, ale jeszcze nie zostało rozwiązane –

Odpowiedz

3

Wygląda na to, że starałem się nadkomplikować rzeczy z powodu mojego własnego braku wiedzy.

I rozwiązać problem przy użyciu Doctrine Cache namespaces

Używam SncRediBundle i roztwory po prostu użyć tego config:

doctrine: 
    metadata_cache: 
     client: cache 
     namespace: "%kernel.root_dir%" 
     entity_manager: default 
Powiązane problemy