Использование memcache в codeigniter



Мне нужна библиотека, которую можно использовать в качестве memcache с моим codeigniter. что мне нужно сделать, так это извлечь меню из БД на основе роли пользователя, а затем сохранить меню в кэше. Идея состоит в том, чтобы показать точное меню другому пользователю, если он имеет ту же роль(без вызова DB). У меня есть отдельный вид для меню (заголовок) и включает его на каждой моей странице(просмотр). Здесь следует отметить, что каждый раз, когда контроллер выполняется при запросе на новую страницу(вид).



Я только что использовал библиотеку https://github.com/tomschlick/memcached-library который не работал для меня в этом сценарии. Когда я вызываю новую страницу, представление заголовка выдает ошибку для не определенной функции get для memcache (поскольку я получаю данные в заголовке через memcache).



Существует ли какая-либо надежная библиотека или способ выполнить эту задачу?



Спасибо

795   2  

2 ответов:

CodeIgniter2 имеет библиотеку кэширования, которая поддерживает Memcache http://ellislab.com/codeigniter/user_guide/libraries/caching.html#memcached

Используйте что-нибудь лилке, что:

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

Образец memcache.php с форума CI

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

  $config['memcached'] = array(
          'hostname' => '127.0.0.1',
          'port'        => 11211,
          'weight'    => 1
  );
?> 

Есть сообщение на форуме с правильным методом, описанным здесь:

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

Comments

    Ничего не найдено.