在codeigniter中使用memcache

时间:2011-10-18 07:20:27

标签: codeigniter memcached codeigniter-2

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

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

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

由于

2 个答案:

答案 0 :(得分:15)

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

使用lilke:

$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
  );
?> 

答案 1 :(得分:0)

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

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