2011-08-09 17 views
13

Zmieniłem konfigurację aplikacji i wdrożyłem nowy kod na serwerze produkcyjnym. Ponieważ aplikacja nie analizuje plików konfiguracyjnych i nie używa skompilowanych klas, musiałem zaktualizować pliki pamięci podręcznej.Jak poprawnie unieważnić pamięć podręczną w produkcji dla aplikacji Symfony2?

Dostępne są polecenia app/console cache:warmup i app/console cache:clear. Ale pamięć podręczna nie została zaktualizowana po wywołaniu tych poleceń, więc musiałem ręcznie usunąć folder app/cache.

Ręczne usuwanie jest bardzo niebezpieczną operacją, ponieważ nie jest atomowe, więc mogę usunąć część pamięci podręcznej podczas żądania, co może doprowadzić do krytycznego błędu.

Jak należy ponownie załadować pamięć podręczną?

+1

Co jest tak źle t ręczne usuwanie? – Gigala

+0

Jeśli nie masz dużego obciążenia, nie ma nic złego w ręcznym kasowaniu. Tylko uprawnienia do folderów pamięci podręcznej i dzienników mogą stać się nieważne. – lisachenko

Odpowiedz

23

Przegapiłeś env parametr: app/console cache:clear --env=prod --no-debug

+1

Dzięki! Zaakceptuj swoją odpowiedź za pomocą jednej poprawki: pamięć podręczna aplikacji/konsoli: wyczyść --env = prod --no-debug – lisachenko

+1

Od 2.1 app/console, gdy nie podano flagi '--env', domyślnie jest to' getenv ('SYMFONY_ENV') 'lub' dev'. Również jeśli podano '--env = prod', wymusiłoby to' --no-debug' Przed 2.1 '--no-debug' wymagało jawnego przekazania' $ env = $ input-> getParameterOption (array ('- -env ',' -e '), getenv (' SYMFONY_ENV ')?:' dev '); $ debug = getenv ('SYMFONY_DEBUG')! == '0' &&! $ Input-> hasParameterOption (array ('- no-debug', '')) && $ env! == 'prod'; 'https : //github.com/symfony/symfony-standard/blob/master/app/console – fyrye

1

Wierzę, że można spróbować app/console cache:clear --no-warmup

+0

Dzięki, ale mam wątpliwości, że na highload nie jest dobrym pomysłem zabicie pamięci podręcznej. Potrzebuję tylko pełnego wdzięku przeładowania dla konfiguracji. – lisachenko

+0

Wierzę, że możesz to zrobić za pomocą 'cache aplikacji/konsoli: wyczyść' – Ascherer

0

wyczyścić pamięć podręczną i natychmiast uzyskać dostęp do danych moja poprawka jest

sudo app/console cache:clear --env=prod --no-warmup --no-debug 

poleceniem wyłącza debug i nie ma czasu nagrzewania, zanim dane będą ponownie dostępne.

+1

należy pamiętać, że flaga '--no-warmup' zapobiega generowaniu nowej pamięci podręcznej opartej na środowisku po zakończeniu operacji' cache: clear' . Opóźnienie (generowanie pamięci podręcznej) wystąpi, gdy aplikacja zostanie uruchomiona po raz pierwszy. – fyrye

Powiązane problemy