【问题标题】:Using memcache in codeigniter在 codeigniter 中使用 memcache
【发布时间】:2011-12-09 20:43:36
【问题描述】:

我需要有一个可以与我的 codeigniter 一起用作 memcache 的库。我需要做的是根据用户的角色从数据库中提取菜单,然后将菜单存储在缓存中。这个想法是如果它具有相同的角色(不调用 DB),则向另一个用户显示确切的菜单。我有一个单独的菜单视图(标题)并将其包含在我的每个页面(视图)中。这里需要注意的是每次控制器在请求新页面(视图)时执行。

我刚刚使用了一个库https://github.com/tomschlick/memcached-library,在这种情况下它对我不起作用。当我调用新页面时,标题视图会为 memcache 的未定义 get 函数引发错误(因为我正在通过 memcache 获取标题中的数据)。

是否有任何可靠的库或方法来完成任务?

谢谢

【问题讨论】:

    标签: codeigniter memcached codeigniter-2


    【解决方案1】:

    CodeIgniter2有缓存库,支持Memcachehttps://www.codeigniter.com/user_guide/libraries/caching.html#memcached-caching

    使用类似的东西:

    $role_id = 2;  
    $menu = $foo = $this->cache->get('menu_'.$role_id);
    if (!$menu){
      $menu_data = $this->my_model->loadMenu($role_id);
      $menu = $this->load->view('menu_tpl', $menu_data, TRUE);
      $this->cache->save('menu_'.$role_id, $menu);
    }
    

    来自CI forum 的 memcache.php 示例

    <?php
      if (!defined('BASEPATH')) exit('No direct script access allowed');
    
      $config['memcached'] = array(
              'hostname' => '127.0.0.1',
              'port'        => 11211,
              'weight'    => 1
      );
    ?> 
    

    【讨论】:

    • 感谢您对 AquilaX 的回复。这些缓存的对象是否可以在整个应用程序中全局访问?
    • 我也无法将数据保存在缓存中。在获取数据时,我得到了“错误”。
    • 代码只是一个示例。这些对象是全局可访问的,因为它们使用相同的服务器。您是否正确配置了缓存?
    • 我只写了 $this->load->driver('cache');并按照您所说的使用它。其实我是codeigniter的新手,不知道如何配置它:(
    • 你必须像这样首先选择适配器: $this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'file') );您还必须在 application/config/memcache.php 中设置服务器
    【解决方案2】:

    有一个论坛帖子,这里列出了正确的方法:

    http://codeigniter.com/forums/viewthread/180005/

    【讨论】:

    • 为什么不使用链接作为主要答案的好例子:'(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2017-08-18
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 2016-01-18
    相关资源
    最近更新 更多