Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CakePhp保存临时数据_Php_Mysql_Cakephp_Memcached_Cakephp 2.0 - Fatal编程技术网

使用CakePhp保存临时数据

使用CakePhp保存临时数据,php,mysql,cakephp,memcached,cakephp-2.0,Php,Mysql,Cakephp,Memcached,Cakephp 2.0,我正在寻找CakePhp解决方案,以存储和读取临时数据: 为了在我的网站上显示一些新闻,我从其他网站上阅读了一些XML,但在每次加载页面时,它都会调用其他XML网站 是否有一种方法(memcached-like)可以保存临时文件。CakePhp中的数据,用于存储1小时的数据并读取温度。用于在我的网页中显示它们的数据;然后在更新后1小时(使用cron) 谢谢。似乎是你想要的 不过,您使用哪种缓存(Redis、Memcache……等等)取决于您。将缓存设置为持续一小时,就可以完成所有设置。(请阅读上

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

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

是否有一种方法(memcached-like)可以保存临时文件。CakePhp中的数据,用于存储1小时的数据并读取温度。用于在我的网页中显示它们的数据;然后在更新后1小时(使用cron)

谢谢。

似乎是你想要的

不过,您使用哪种缓存(Redis、Memcache……等等)取决于您。将缓存设置为持续一小时,就可以完成所有设置。(请阅读上面链接中有关缓存的更多信息)

如果您使用的是CakePHP2.5+,那么可以使用
记住
方法

基本上,这只是检查缓存键是否存在,如果不存在,则运行一些代码以再次填充它

如果你低于2.5,你可以做同样的基本事情,但是没有
记住

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有很多很棒的地方,在这种情况下,无论您选择的缓存类型/位置/配置如何,您的代码都不会更改。

快速提问,缓存是否会自动刷新,或者我需要配置cron来完成此操作?此时我使用文件缓存。@zeflex-您可以在缓存“持续时间”设置中设置缓存的长度:我同意,我这样做了,但是cakephp是否在没有任何cron设置的情况下删除缓存文件本身?老实说,我不确定是否有文件缓存。使用Redis(例如),一旦持续时间过去,密钥将自动删除。谢谢。我将亲自查看文件,但由于我每N分钟覆盖一次旧数据,文件将不会被删除。
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;
}