【问题标题】:Codeigniter object cache doesnt workCodeigniter 对象缓存不起作用
【发布时间】:2015-05-18 18:18:06
【问题描述】:

我正在尝试将 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;

    }

}

当我将config.php 中的cache_path 从无变为有时,我得到了这个工作:

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

但是现在,不知从何而来,它再次开始忽略缓存,我得到的唯一结果是“未缓存”。

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

【问题讨论】:

    标签: codeigniter caching codeigniter-2


    【解决方案1】:

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

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

    插入就可以管理

    var_dump($this->cache->cache_info());
    

    在缓存中保存变量后

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

    【讨论】:

    • 它在$this-&gt;cache-&gt;save('zzz', $cache_data, 60 * 60 * 12); 之后返回boolean false。我检查该文件夹是否存在并且确实存在。我尝试将路径更改为空,但没有运气。我摆脱了缓存文件夹中的 .htaccess 和 index.html,但没有用。
    • cache_info 方法返回 false 意味着什么??
    【解决方案2】:

    很简单,chmod 777 -R cache/ 成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-13
      • 2018-12-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 2021-01-22
      • 1970-01-01
      相关资源
      最近更新 更多