Pourquoi ne puis-je accéder à ma clé de cache personnalisé via CLI quand il a été défini via une requête Web?

magento.stackexchange https://magento.stackexchange.com/questions/5543

  •  16-10-2019
  •  | 
  •  

Question

J'ai une méthode qui appelle le code suivant à partir d'une requête web.

Mage::app()->getCache()->save('bar', 'foo', array(), 60*5);

J'ai une autre méthode qui appelle

Mage::app()->getCache()->load('foo');

La méthode qui charge la valeur mise en cache renvoie la valeur correcte lorsqu'elle est appelée via une requête Web, mais toujours retourne false quand je lance le code via la CLI.

La raison pour laquelle je suis en train d'exécuter via le CLI est que le code en question fait partie d'une tâche cron. J'utilise n98-magerun sys:cron:run foobar_cron pour exécuter le code.

Ma première pensée a été que l'exécution peut-être de la CLI déclencherait une vue autre magasin, mais je l'ai fait un pas par le code et n'a pas trouvé quelque chose comme ça.

Essayer d'obtenir la valeur en cache lors de l'exécution via le web à travers des œuvres d'administration.

J'utilise le système de fichiers standard Magento cache, et ne pas avoir de paramètres de cache personnalisés dans mon local.xml. Exécution EE 1.12.0.2.

J'attendre à ce que, quand je mis une clé de cache via une requête Web que je pouvais accéder à la même valeur lors de l'exécution via la CLI et vice verca. Pourquoi ne serait-ce travail comme prévu, et que puis-je faire pour y remédier?

Était-ce utile?

La solution

Mon pari est sur les autorisations de fichier. Assurez-vous que votre répertoire var/cache/ a lecture / écriture pour l'utilisateur shell et l'utilisateur exécute Apache sous.

Lorsqu'il ne peut pas lire à partir du répertoire de cache normal, il se fallback silencieusement dans le répertoire temporaire du système, de le remplir avec plus que quelques enregistrements de cache / zend locale.

Autres conseils

Si votre back-end de cache APC est alors CLI et Apache APC sont complètement différents et ne peut être partagée entre les deux malheureusement.

Si votre back-end de cache est basé le système de fichiers, alors vous devriez regarder les autorisations. Si les autorisations est un problème que vous pourriez envisager de créer votre Cron en tant qu'utilisateur Apache comme un travail autour si ce n'est pas idéal, une meilleure option est de regarder en utilisant ACL - un coup d'oeil à la commande setfacl si cela est applicable à votre distribution Linux

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top