使用CakePhp保存临时数据

时间:2014-09-13 03:24:35

标签: php mysql cakephp memcached cakephp-2.0

我正在寻找CakePhp中的解决方案来存储和读取临时数据:

我从其他网站上读取了一些XML,以便在我的网站上显示一些新闻,但在每次加载页面时,它都会调用其他xml网站。

有没有办法(memcached之类)来节省临时费用。 CakePhp中的数据,以便存储1小时的数据并读取临时数据。数据显示在我的网页中;更新后1小时(用cron)?

感谢。

1 个答案:

答案 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的许多令人敬畏的事情之一是,在这种情况下,无论您选择哪种缓存类型/位置/配置,您的代码都不会改变。