2011-10-18 65 views
4

我需要有可用作memcache和我的codeigniter的庫。我需要做的是從用戶的角色基礎上從數據庫提取菜單,然後將菜單存儲在緩存中。這個想法是,如果它具有相同的角色(不調用數據庫),則向另一個用戶顯示確切的菜單。我有一個單獨的菜單視圖(標題),並將其包含在我的每個頁面(視圖)中。這裏需要注意的是每次請求新頁面時執行控制器(視圖)。在codeigniter中使用memcache

我剛剛使用了一個庫https://github.com/tomschlick/memcached-library,在這種情況下這對我不起作用。在我調用新頁面時,標題視圖爲memcache的未定義get函數(因爲我通過memcache在頭中獲取數據)拋出一個錯誤。

有沒有固定的庫或方式來完成任務?

感謝

回答

15

CodeIgniter2具有緩存庫,它支持內存緩存http://ellislab.com/codeigniter/user_guide/libraries/caching.html#memcached

使用的東西lilke認爲:從CI forum

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

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

感謝您的答覆AquilaX。這些緩存對象是否可以在整個應用程序中全局訪問? –

+0

此外,我無法將數據保存在緩存中。同時獲得我收到的數據'錯誤'。 –

+0

該代碼只是一個示例。對象是全局可訪問的,因爲它們使用相同的服務器。你正確配置了緩存嗎? – AquilaX

0

$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有與我正確的論壇帖子這裏的ThOD概述:

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

+1

很好的例子,爲什麼不使用鏈接作爲主要答案:'( – skrilled