2013-04-04 15 views
6

Mam skrypt, który wprowadza zmiany w konfiguracji Symfony2 i musi zostać powiadomiony o nowej konfiguracji, zanim przejdzie dalej (w szczególności dodawanie połączeń dbal). Czy istnieje sposób na wymuszenie przeładowania konfiguracji podczas wykonywania skryptu?Przeładuj konfigurację Force w Symfony2

+0

nie jestem pewien, czy to możliwe, co w zasadzie oznacza, że ​​musiałeś reinicjalizować cały Service Container podczas uruchamiania swojego skryptu, może zajrzyj do app.php, czy możesz zrestartować jądro podczas uruchamiania twojego skryptu? – Hannes

Odpowiedz

10

Aktualizacja: Nie można przeładować konfigurację, ale można ustawić parametry on-the-fly, patrz drugi "Update" ustęp

To naprawdę nie jest to możliwe w Symfony2 to zrobić.

W trybie produkcyjnym, wszystko (nawet konfiguracja) jest buforowane, więc trzeba wyczyścić pamięć podręczną z

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

(może następnie app/console cache:warmup --env=prod --no-debug)

przeładować konfigurację. W trybie programowania możesz eksperymentować z shutdown(), a następnie boot() z Symfony\Component\HttpKernel\Kernel lub może loadClassCache - ale to wszystko nie jest to, czego chcesz.

Jakie dokładnie zmiany wprowadzono w plikach konfiguracyjnych? Może powinieneś użyć różnych plików dla różnych środowisk lub rozważyć jakąkolwiek inną metodę uzyskania tych zmian (za pomocą prostego Webservice lub nawet statycznego pliku odczytanego z kontrolera).

Aktualizacja:

zorientowali się, że może ustawić parametr konfiguracyjny kontenera on-the-fly poprzez

$container->setParameter('parameter', value); 

Wystarczy popatrzeć na the Symfony2 documentation.

+0

Tworzę dodatkowe połączenia z bazą danych w locie i dodaje je do pliku config.yml (jako część konfiguracji dla wielu dzierżawców). –

+0

Właśnie zaktualizowałem moje pytanie. To może ci pomóc. – akluth

5

Moja odpowiedź prawdopodobnie przybywa bardzo późno, ale może być przydatna dla kogoś innego.

Pamięć podręczna Symfony dla środowiska "prod" jest przechowywana w folderze "app/cache/prod /" i zawiera wiele elementów (szablony Twig tłumaczone w PHP w podfolderze "twig /", adnotacje w podfolderze "adnotacje /", i. .. parametry konfiguracyjne, pliki aplikacji * ProjectContainer.php, między innymi).

Więc, co możesz zrobić, to: gdy skrypt konfiguracyjny zmienia parametry.yml, może również usunąć appProdProjectContainer.php. Następny użytkownik, który trafi w twoją aplikację Symfony, będzie miał nieco dłuższy czas reakcji, ale nowy parametr konfiguracyjny zostanie wzięty pod uwagę i zapisany w pamięci podręcznej.