CLIがWebリクエストを介して設定されたときに、CLIを介してカスタムキャッシュキーにアクセスできないのはなぜですか?
質問
Webリクエストから次のコードを呼び出す方法があります。
Mage::app()->getCache()->save('bar', 'foo', array(), 60*5);
呼び出す別の方法があります
Mage::app()->getCache()->load('foo');
Cached値をロードする方法は、Webリクエストを介して呼び出されたときに正しい値を返しますが、CLIを介してコードを実行するときは常にfalseを返します。
CLIを介して実行しようとしている理由は、問題のコードがCronタスクの一部であるためです。私は使用しています n98-magerun sys:cron:run foobar_cron
コードを実行します。
私の最初の考えは、おそらくCLIから走ることは別のストアビューを開始するだろうということでしたが、私はコードを踏み出しましたが、そのようなものは見つかりませんでした。
Webを介して管理作業を介して実行するときに、キャッシュ値を取得しようとします。
標準のMagentoファイルシステムキャッシュを使用していますが、local.xmlにカスタムキャッシュ設定はありません。 EE 1.12.0.2の実行。
Webリクエストを介してキャッシュキーを設定すると、CLIとVice Vercaを介して実行するときに同じ値にアクセスできることが期待されます。なぜこれが期待どおりに機能しないのか、そしてそれを修正するために何ができるのですか?
解決
私の賭けはファイル許可にあります。あなたを確認してください var/cache/
ディレクトリには、シェルユーザーとユーザーApacheが実行されている両方の読み取り/書き込みがあります。
通常のキャッシュディレクトリから読み取れない場合は、システムTEMPディレクトリに静かにフォールバックし、Zend/Locale Cacheレコードを数回以上に満たします。
他のヒント
キャッシュバックエンドの場合、CLIとApache APCは完全に異なり、残念ながら2つの間で共有できません。
キャッシュバックエンドがファイルシステムベースの場合は、アクセス許可を確認する必要があります。許可が問題である場合、CronをApacheユーザーとして実行することを回避策として検討できる場合、それは理想的ではありません。より良い選択肢は、ACLを使用することです。 setfacl
Linuxディストリビューションに適用できる場合はコマンド