2016-10-27 1 views
3

Was ist der Unterschied zwischen ./bin/console cache:clear --env=prod und rm -rf var/cache/prod/*? Konsolenbefehl ist sehr langsam. Bash-Befehl ist schnell. Also, ... warum verwenden Sie cache:clear anstelle von rm?Cache löschen in Symfony: `cache: clear` oder` rm -rf`?

+0

Sie lesen überall, wo es besser ist, 'php app/console blahblah' zu verwenden,' php app/console macht kaffee', 'php app/console lässt meine Träume wahr werden'. Der "offizielle" beste Ansatz sollte sein: "php app/console doctrine: cache: löschen-metadata && php app/console doctrine: cache: löschen-abfrage && php app/console doctrine: cache: clear-result'. Glaube nicht, was sie sagen. Ich hatte Apache als Reverse Proxy, dann hatte ich Lack, dann Nginx, und ich habe in allen Versionen von Symfony von 2.3 bis 3 jetzt aktualisiert und es ** hat noch nie ** richtig funktioniert. Niemals. Die tatsächliche und effektive Lösung? In meinem nächsten Kommentar –

+1

... Die tatsächliche und effektive Lösung? 'rm -rf ./app/cache/dev/*; rm -rf./app/cache/prod/* 'starte dann deinen Webserver neu, was auch immer es ist, um den Cache zu leeren. Dies ist die einzige effektive Methode. Nicht die Besten, nicht die "Best Practices befolgen, an den Weihnachtsmann glauben, an Perfektion glauben", sondern der, der funktioniert. Und ich vermute, dass es deshalb auf Facebook-Wänden "besser gemacht als perfekt" geschrieben ist. Ich habe meinen Cache frei und ** es funktioniert **. Ich habe die Nase voll von dem Hype "only use' php app/console ". Und wenn Sie unter Windows sind, werden Sie immer auf diese Weise enden, glauben Sie einem 4yo Symfony Benutzer. –

+0

stimme mit der 'rm -rf' überein, die perfekt funktioniert. Das einzige Problem ist die Unmöglichkeit, einige Dateien zu löschen, die ich benutze, die ich gelöst habe, indem ich den Befehl mehr als einmal gestartet habe –

Antwort

6

cache:clear löscht zuvor erstellte Cache-Elemente, aber auch, es tut ein Cache-Warm-up. Auf diese Weise sollte Ihre Anwendung sehr schnell geladen werden, da der Cache bereits vorbelegt war.

Auf der anderen Seite, rm -rf macht nur einen Teil der Arbeit. Sie sollten die Auswirkungen auf die Leistung bemerken, wenn Sie versuchen, Ihre App das erste Mal danach zu laden.

Ich möchte auch noch etwas anderes hervorheben: Berechtigungen. Wenn Sie zum Beispiel als root angemeldet sind und Sie keine Zugriffsrechte über setfacl (oder eine andere Methode) festgelegt haben, wird cache:clear höchstwahrscheinlich Ihre Cache-Elemente erstellen, die root gehören. Dies könnte ein Problem sein, auf der ganzen Linie.

hoffe, das hilft ein wenig ...

4

„cache: clear“ Befehl entfernt nicht nur den Cache, aber sie in der Regel die aktualisierten Cache-Daten (aufwärmen) bauen, so dass symfony nicht einer nach dem erstellen hat Die erste Anfrage kommt, weshalb es mehr Zeit in Anspruch nimmt als das bloße Entfernen von Dateien in Ihrem Cache-Ordner mit "rm -rf". Auch wenn Sie diesen Befehl schneller beenden können, würde es eine Weile dauern, bis Sie die erste Anforderung verarbeiten, wenn Sie mit diesem Befehl keinen Cache erstellt haben.

http://symfony.com/doc/current/console/usage.html

Also, in der Regel ist es besser, Cache laufen: klar, zumindest in dem gesamten Prozess der Bereitstellung. Die Gelegenheit, die Sie rm Befehl verwenden würde, ist in der Regel nur, wenn einige Dateiberechtigungen falsch gegangen sind (d. H. Vielleicht hatten Sie einen Befehl mit einem falschen Benutzer ausgeführt) und es gab keine Auswahlmöglichkeiten, denke ich.