2011-08-09 2 views
13

J'ai modifié la configuration de l'application et déployé le nouveau code sur le serveur de production. Étant donné que l'application n'analyse pas les fichiers de configuration et utilise des classes précompilées, j'ai dû mettre à jour les fichiers de cache. Il existe app/console cache:warmup et app/console cache:clear. Mais le cache n'a pas été mis à jour après avoir invoqué ces commandes, j'ai donc dû supprimer le dossier app/cache manuellement.Comment invalider correctement le cache en production pour l'application Symfony2?

La suppression manuelle est une opération très dangereuse car elle n'est pas atomique. Je peux donc supprimer une partie du cache pendant la requête, ce qui peut entraîner une erreur fatale.

Comment recharger le cache?

+1

Qu'est-ce qui est si mauvais t suppression manuelle? – Gigala

+0

Si vous n'avez pas de surcharge, il n'y a rien de mal avec la suppression manuelle. Seules les autorisations pour les dossiers de cache et de journal peuvent devenir invalides. – lisachenko

Répondre

23

Vous avez manqué env paramètre: app/console cache:clear --env=prod --no-debug

+1

Merci! Acceptez votre réponse avec une solution: app/cache de la console: clear = --env prod --no-debug – lisachenko

+1

Depuis 2.1 app/console lorsqu'aucun 'drapeau --env' a été fourni par défaut il soit' getenv ('SYMFONY_ENV') 'ou' dev'. De plus, si '--env = prod' était fourni, cela forcerait' --no-debug' Avant 2.1 '--no-debug' devait être passé explicitement '$ env = $ input-> getParameterOption (array (' - -env ',' -e '), getenv (' SYMFONY_ENV ')?:' dev '); debug $ = getenv ('SYMFONY_DEBUG') == '0' && $ entrées-> hasParameterOption (array ('- sans debug', 'prod'! ')) && $ env =='; 'https : //github.com/symfony/symfony-standard/blob/master/app/console – fyrye

1

je crois que vous pouvez essayer app/console cache:clear --no-warmup

+0

Merci, mais je doute que pour le chargement, ce n'est pas une bonne idée de tuer le cache. Je n'ai besoin que d'un rechargement gracieux pour la configuration. – lisachenko

+0

Je crois que vous pouvez suivre cela avec 'app/console cache: clear' – Ascherer

0

Pour effacer le cache et accéder instantanément aux données ma solution est

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

en utilisant cette commande désactive le débogage et n'a pas de temps de préchauffage avant que les données soient à nouveau accessibles

+1

garder à l'esprit que le drapeau --no-warmup' empêche un nouveau cache en fonction de l'environnement d'être généré après 'cache: clear' complète . Le délai (génération de cache) se produit lorsque l'application est exécutée pour la première fois à la place. – fyrye

Questions connexes