当通过Web请求设置时,为什么我不能通过CLI访问自定义缓存键?

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

  •  16-10-2019
  •  | 
  •  

我有一种从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发行版

许可以下: CC-BY-SA归因
scroll top