当通过Web请求设置时,为什么我不能通过CLI访问自定义缓存键?
题
我有一种从Web请求调用以下代码的方法。
Mage::app()->getCache()->save('bar', 'foo', array(), 60*5);
我有另一种调用的方法
Mage::app()->getCache()->load('foo');
加载缓存值的方法在通过Web请求调用时返回正确的值,但是当我通过CLI运行代码时始终返回False。
我试图通过CLI运行的原因是,有关代码是CRON任务的一部分。我在用着 n98-magerun sys:cron:run foobar_cron
运行代码。
我最初的想法是,也许从CLI跑步会启动其他商店视图,但是我已经介入了代码,但没有找到类似的东西。
通过管理员运行时,试图获得缓存的值。
我正在使用标准的Magento文件系统缓存,并且我的local.xml中没有任何自定义的缓存设置。运行EE 1.12.0.2。
我希望,当我通过Web请求设置缓存键时,我可以在通过CLI和VICE VERCA运行时访问相同的值。为什么这不正常,我该怎么办才能解决?
解决方案
我的赌注是文件许可。确保您的 var/cache/
目录已针对Shell用户和用户Apache运行。
在无法从普通缓存目录中读取的地方,它会默默地退缩到系统临时目录,不仅填充了一些Zend/locale Cache Records。
其他提示
如果您的缓存后端是APC,则CLI和APACHE APC是完全不同的,不幸的是在两者之间无法共享。
如果您的缓存后端是基于文件系统,则应查看权限。如果权限是一个问题,您可以考虑将您的CRON作为Apache用户作为工作,尽管这不是理想的工作,那么更好的选择是考虑使用ACL - 看看 setfacl
命令是否适用于您的Linux发行版