IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Vider le cache du frontend depuis le backend [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Par défaut Vider le cache du frontend depuis le backend
    Bonjour,

    Je cherche à mettre en place le fait de pouvoir vider le cache d'un module du frontend, lorsque l'on ajoute ou édite un élément dans le backend.

    J'ai trouvé comment faire, je crois, mais rien ne passe.

    Dans mon backend, je modifie la méthode processForm dans le fichier actions.class.php du module news.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public function processForm(sfWebRequest $request, sfForm $form)
        {
            $frontend_cache_dir = sfConfig::get('sf_cache_dir').DIRECTORY_SEPARATOR.'frontend'. DIRECTORY_SEPARATOR.sfConfig::get('sf_environment').DIRECTORY_SEPARATOR.'template';
            $cache = new sfFileCache(array('cache_dir' => $frontend_cache_dir)); // Use the same settings as the ones defined in the frontend factories.yml
            $result = $cache->removePattern('news/index');
     
            parent::processForm($request, $form);
     
        }
    Et dans le fichier factories.yml dans le dossier frontend/config/ j'ai rajouté:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    view_cache:
        class: sfFileCache
        param:
          automatic_cleaning_factor: 0
          cache_dir:                 %SF_TEMPLATE_CACHE_DIR%
          lifetime:                  86400
          prefix:                    %SF_APP_DIR%/template
    Normalement la ligne $result = $cache->removePattern('news/index'); devrait retourner true si tout va bien, mais elle me renvoie false à chaque fois...

    J'ai trouvé les informations par-ci par-là, ici principalement.

    Si vous avez une idée, je suis preneur!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Par défaut
    Bon j'ai trouvé!

    Depuis mon backend j'étais dans mon environnement Dev, et ma variable $frontend_cache_dir me renvoyait le chemin du frontend de l'environnement Dev, alors que je voulais celui appelé Cache.

    Donc finalement ça fonctionne, pratique pour gérer le cache et les mises à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $frontend_cache_dir = sfConfig::get('sf_cache_dir').DIRECTORY_SEPARATOR.'frontend'. DIRECTORY_SEPARATOR.sfConfig::get('sf_environment').DIRECTORY_SEPARATOR.'template';
            $cache = new sfFileCache(array('cache_dir' => $frontend_cache_dir)); // Use the same settings as the ones defined in the frontend factories.yml
            $toto = $cache->removePattern('centre_chep/*/news/*');
    Les * correspondent à n'importe quoi.

  3. #3
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Je n'ai pas trop suivi, mais je tiens à apporter un bémol majeur (!)

    Ceci ne marche que si le cache est dans un système de fichier, si l'on a décidé d'utiliser un autre système de gestion de cache (sqlite par exemple) cela ne marchera pas.

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Par défaut
    Je crois que, plutôt que de faire un $cache = new sfFileCache(...), on peut écrire $cache = new sfSQLiteCache(...), comme ces deux sous classes héritent de sfCache, elles ont aussi les méthodes removePattern.

    A tester, et je te dirai !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Cache Clear depuis le backend
    Par johnbenz dans le forum Symfony
    Réponses: 4
    Dernier message: 31/12/2011, 13h08
  2. [C#] Vider le cache d'un client
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/09/2007, 11h21
  3. Vider le cache depuis un applet
    Par metalcoyote dans le forum Applets
    Réponses: 1
    Dernier message: 09/05/2007, 09h52
  4. [Cache IE] vider le cache d'IE
    Par Casp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/02/2006, 15h27
  5. Vider le cache des archives
    Par Thrystan dans le forum Debian
    Réponses: 4
    Dernier message: 30/06/2005, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo