我正在CakePhp中寻找一个解决方案,用于存储和读取临时数据:
我从其他网站读取了一些XML,以便在我的网站中显示一些新闻,但在每次加载页面时,它都会调用其他XML网站。
有没有一种方法(类似memcached)可以将临时数据保存在CakePhp中,以便存储1小时的数据,并读取临时数据以在我的网页中显示它们;然后在更新后1小时(用cron)?
谢谢。
CakePHP缓存似乎是您想要的。
使用哪种缓存(Redis、Memcache等)取决于您。将你的缓存设置为持续一个小时,你就做好了准备。(请阅读上面链接中有关缓存的更多信息)。
如果您使用的是CakePHP 2.5+,则可以使用此处描述的remember
方法。
public function newest() {
$model = $this;
return Cache::remember('newest_posts', function() use ($model){
// get your data from whatever source here, and return it
return $model->getMyData();
}, 'long');
}
基本上,这只是检查缓存键是否存在,如果不存在,则运行一些代码以便再次填充它。
如果你低于2.5,你可以做同样的基本事情,但没有remember
:
public function newest() {
$result = Cache::read('newest_posts', 'long');
if (!$result) {
// get your data from whatever source here, and write it
Cache::write('newest_posts', $this->getMyData(), 'long');
}
return $result;
}
如果你没有安装缓存引擎,或者不想破坏自己的服务器,你可以使用一些公司进行缓存,你只需设置缓存设置即可连接到它们。ObjectRocket(Redis)是我现在所知道的,但我相信有很多。
CakePHP的一大优点是,在这种情况下,无论您选择的缓存类型/位置/配置如何,您的代码都不会更改。