【问题标题】:Can't caching object in codeigniter无法在 codeigniter 中缓存对象
【发布时间】:2018-12-15 14:49:43
【问题描述】:

我在 地址 控制器中有以下代码

public function index()
    {
        if($this->session->userdata('isLogin')) {
            $this->load->driver('cache');
            $this->load->model('MemberModel');
            if(!$this->cache->get('province') == false) {
                $this->load->model('ShippingModel');
                $data['provinces'] = $this->ShippingModel->the_provinces(); // it will return json object
                $this->cache->save('province', $data['provinces'], 300);
            } else {
                $data['provinces'] = $this->cache->get('province');
            }
            $userdata = $this->MemberModel->getProfile($this->session->userdata('userid'));
            $data['user'] = $userdata;

            $this->display_member_area('member/address', $data);
        }
        else {
            redirect(base_url());
        }
    }

当我想使用以下方式获取数据时:

var_dump($this->cache->get('province')); 

我得到的结果总是显示

bool(false)

但是当我尝试这样做时

var_dump($data['provinces']) // it's show me json object, that I want

谁能告诉我我哪里做错了?

提前致谢

【问题讨论】:

  • 你的 CI 版本是多少?
  • 你在哪里设置了这里使用的缓存? $this->cache->get('province') 使用的缓存模块找不到缓存键时返回 false。
  • @AbdulAhmadMatin 我使用的是 3.1.5 版
  • @Charis 我在上面代码的第 9 行设置了$this->cache->save('province', $data['provinces'], 300);
  • 您能否确保缓存驱动程序按预期工作?也许使用简单的字符串数据来保存和检索它。有一次,在我的团队看到类似的东西之前,有人试图保存一些非序列化的资源对象。

标签: php codeigniter caching memcached


【解决方案1】:

if 条件中删除false 并使用此代码。

       if(!$this->cache->get('province')) {
            $this->load->model('ShippingModel');
            $data['provinces'] = $this->ShippingModel->the_provinces();
            $this->cache->save('province', $data['provinces'], 300);
        } else {
            $data['provinces'] = $this->cache->get('province');
        }

【讨论】:

  • 像这样编辑你的代码$provinces = $this->ShippingModel->the_provinces();$this->cache->save('province', $provinces, 300);
  • 没有出现错误。但是当我执行var_dump($this->cache->get('province')); 时,它总是返回bool(false)。我在此评论上方尝试了您的代码。但仍然返回 FALSE。感谢 AbdulAhmadMatin
【解决方案2】:

确保您在以下位置的配置中拥有正确的凭据:

https://github.com/bcit-ci/CodeIgniter/blob/develop/application/config/memcached.php

它将在您的application/config/memcached.php 文件中。主机名是您设置 memcached 实例的 ip。如果您愿意,您可以提供多个服务器。

reference on installing memcached

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2020-07-11
    • 2012-09-15
    • 2010-11-23
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多