Warum kann ich nicht über CLI auf meine benutzerdefinierte Cache -Taste zugreifen, wenn sie eine Webanforderung festgelegt wurde?

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

  •  16-10-2019
  •  | 
  •  

Frage

Ich habe eine Methode, die den folgenden Code aus einer Webanforderung aufruft.

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

Ich habe eine andere Methode, die aufruft

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

Die Methode, die den zwischengespeicherten Wert lädt, gibt den richtigen Wert zurück, wenn er über eine Webanforderung aufgerufen wird, aber immer False zurückgibt, wenn ich den Code über die CLI ausführe.

Der Grund, warum ich versuche, über die CLI zu laufen, ist, dass der fragliche Code Teil einer Cron -Aufgabe ist. Ich benutze n98-magerun sys:cron:run foobar_cron den Code ausführen.

Mein erster Gedanke war, dass vielleicht das Laufen aus der CLI eine andere Sichtweise einleiten würde, aber ich habe den Code durchgesetzt und so etwas nicht gefunden.

Der Versuch, den zwischengespeicherten Wert beim Ausführen über das Web über Administrator zu erhalten, funktioniert.

Ich verwende den Standard -Magento -Dateisystem -Cache und habe keine benutzerdefinierten Cache -Einstellungen in meinem lokalen.xml. Laufen EE 1.12.0.2.

Ich würde erwarten, dass ich, wenn ich eine Cache -Taste über eine Webanforderung festlegt, dass ich beim Ausführen über die CLI und Vice Verca auf denselben Wert zugreifen kann. Warum funktioniert das nicht wie erwartet und was kann ich tun, um es zu beheben?

War es hilfreich?

Lösung

Meine Wette ist in Dateiberechtigungen. Stellen Sie sicher, dass Ihre var/cache/ Das Verzeichnis wurde sowohl für den Shell -Benutzer als auch für den Benutzer von APache gelesen/schreiben.

Wo es nicht aus dem normalen Cache -Verzeichnis gelesen wird, fällt es stillschweigend in das System -Temp -Verzeichnis und füllt es mit mehr als nur wenigen Zend-/Gebietsschema -Cache -Datensätzen.

Andere Tipps

Wenn Ihr Cache -Backend APC ist, sind CLI und Apache APC völlig unterschiedlich und können leider nicht zwischen beiden geteilt werden.

Wenn Ihr Cache -Backend -basiertes Dateisystem basiert, sollten Sie sich die Berechtigungen ansehen. Wenn Berechtigungen ein Problem sind, können Sie Ihren Cron als Apache -Benutzer als Arbeit ausführen. Dies ist jedoch nicht ideal. Eine bessere Option besteht darin, die Verwendung von ACL zu betrachten. Schauen Sie sich das an die setfacl Befehl Wenn dies für Ihre Linux -Distribution anwendbar ist

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top