Programmgesteuertes Löschen des Cache auf Symfony 2

9

Ich versuche, den Symfony 2-Cache durch meine Anwendung zu leeren, als ob ich php app/console cache:clear machen würde.

Ich habe viele verschiedene Lösungen ausprobiert, wie zum Beispiel:

%Vor%

Ich habe auch versucht,% Co_de% den Cache-Ordner.

Keiner von ihnen funktioniert vollständig, da ich viele Fehler bekomme. Der folgende Fehler ist der, den ich auf Lösung 2 bekomme (was der beste zu sein schien):

  

Starten der Sitzung fehlgeschlagen: bereits von PHP gestartet ($ _SESSION ist gesetzt).

Scheint so, als ob Symfony versucht, die Seite neu zu erstellen oder die Anwendung während des Renderns neu zu starten.

Wie könnte jemand den Cache über einen PHP-Code löschen?

BEARBEITEN: Ich versuche tatsächlich, den Cache aufgrund meines Routing-Systems neu zu generieren. Ich habe ein Bundle erstellt, das eine Symfony 2-Route nimmt und die Möglichkeit bietet, es für SEO-Zwecke neu zu schreiben (Beispiel: Ich habe eine Front-Kategorie-Route, die auf / category verweist, mit diesem Bundle kann ich sie in Kategorie-Seo-optimiert umschreiben. html).

Wenn ich auf einer Route bin, die bestimmte Parameter benötigt, wie zum Beispiel eine ID, muss ich eine spezielle Route für sie erstellen, um sie neu zu schreiben. Zum Beispiel muss ich für / category / 3 eine Route erstellen, die category_3 und .. heißt. Damit Symfony weiß, dass ich das Routing-System geändert habe, musste ich den Cache leeren.

    
user3348802 09.06.2014, 07:15
quelle

2 Antworten

6

Genau das gleiche Problem, das ich gerade hatte. Die einfachste Lösung für mich war:

%Vor%

und im Controller:

%Vor%

Dadurch wird das Cache-Verzeichnis für die aktuelle Umgebung gelöscht.

    
Markus Kottländer 19.02.2015, 10:50
quelle
3

Eine ähnliche Frage ist bereits hier beantwortet: Symfony 2.4 execute Command from Controller - antwortete 20. März um 15:37 Uhr pomaxa.

Ich habe den Code von pomaxa getestet und erweitert :

Controller-Code

%Vor%

Ich habe den statischen Umgebungsmodus verwendet und versucht, das CacheClearCommand-Objekt anstelle des Dienstes zu verwenden, aber es hat nicht funktioniert. Die Cache-Löschen-Operation kann lange dauern, um geladen zu werden, daher könnte es besser sein, einen Dienst zu verwenden.

Am besten wäre es, Ihr Problem zu lösen, ohne den Cache zu löschen. Finden Sie die sich schnell ändernden Entitäten, Aktionen oder alles, was Sie brauchen, und deaktivieren Sie das Zwischenspeichern für sie. Wenn Sie eine detaillierte Frage posten (und den Link im Kommentar einfügen), warum Sie Cache und wo ignorieren müssen, dann könnte ich Ihnen helfen, einen anderen Weg zu finden.

    
szecsikecso 10.06.2014 12:08
quelle

Tags und Links