我正在寻找CakePhp中的解决方案来存储和读取临时数据:
我从其他网站上读取了一些XML,以便在我的网站上显示一些新闻,但在每次加载页面时,它都会调用其他xml网站。
有没有办法(memcached之类)来节省临时费用。 CakePhp中的数据,以便存储1小时的数据并读取临时数据。数据显示在我的网页中;更新后1小时(用cron)?
感谢。
答案 0 :(得分:2)
CakePHP Caching似乎是你想要的。
你使用的缓存(Redis,Memcache等)会由你决定。将缓存设置为持续一小时,您就完成了设置。 (阅读上面链接上有关缓存的更多信息)。
如果您使用CakePHP 2.5+,则可以使用remember
方法described here。
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的许多令人敬畏的事情之一是,在这种情况下,无论您选择哪种缓存类型/位置/配置,您的代码都不会改变。