Codeigniter对象缓存不起作用

时间:2015-05-18 18:18:07

标签: codeigniter caching codeigniter-2

我正在尝试将json web响应保存到缓存中,我的控制器很简单,这里是:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

include_once APPPATH . 'models/presenters/Radio.php';
use Streame\Model\Presenter\Radio as Radio;
use Streame\Model\Presenter\Genre as Genre;

class Test extends MY_Controller {


    public function index(){
        $this->load->driver('cache');
        if (! $cache_data = $this->cache->get('zzz')) {
            $req = $this->send_req('radios', 'GET', array("size" => 5, "phrase" => "rock"));
            $json = $req->json();
            $top_50_radios = Radio::deserializeJsonArray($json["docs"]);
            $cache_data = (object) $top_50_radios;
            $this->cache->save('zzz', $cache_data, 60 * 60 * 12);

            echo "\n</br>NOT CACHEEEEED"; var_dump($cache_data);
        } else {
            echo "\n</br>CACHEEEEED";  var_dump($cache_data);
        }
        shuffle($cache_data);
        $data["random_radio"] = $cache_data[0]->permalink;

    }

}

当我将cache_path中的config.php更改为无效时,我就开始工作了:

$config['cache_path'] = APPPATH.'../../cache/';

但是现在,无处不在,它开始再次忽略缓存,我唯一得到的就是“不会缓存”。

我在nginx服务器上运行框架,可能与文件的权限有关吗?

2 个答案:

答案 0 :(得分:1)

如果您更改缓存路径配置,我不知道您的问题是否消失了 因为它应该可以工作,如果你把它留空(你应该在你的应用程序文件夹中有一个缓存文件夹)

我要做的第一件事是检查变量是否正确保存

如果你插入

,你可以管理它
var_dump($this->cache->cache_info());

将变量保存在缓存中

如果你在这里得到正确的信息 - 我们开始朝着正确的方向前进 - 如果不是,你必须检查你的路径是否真的存在

答案 1 :(得分:1)

非常简单,chmod 777 -R cache/就行了。