Привет… Тебе наверное понадобился правильный или частичний Кешинг для CI?Ну Скажем вам надо частично скешировать ваш код для далнейших действий. Тогда не ломайте голову!.
Качаем сначала KhCache (http://codeigniter.com/forums/viewthread/69843/) от Khaosа.
1. Инсталл
Кидаем его в папку /application/libraries/
И начинаем юзать.
Если захотите переписать дефолтовые значения , те параметры библиотеки, то в папке /application/config создаем Khaos.php
И в нем пишем
$config['cache'] = array('container' => 'File',
'ttl' => 3600,
'File' => array('store' => BASEPATH.'cache/',
'auto_clean' => 10,
'auto_clean_life' => 3600,
'auto_clean_all' => false));
Все думаю понятно. Если захоите вместо контейнера File использовать скажем XCache Надо немножко помудить
с библиотекой
А в конфиге Написать так например
$config['cache'] = array('container' => 'APC');
Для чего отвечают отдельные ключи в массиве?
auto_clean - By default there is a 1 in 10 chance of the cache dir being cleaned, set to false to disable.
auto_clean_life - Files older than this will be removed.
auto_clean_all - By default only cache files prefixed with khcache_ are removed set to true to have khcache clean the entire directory
2. Использование
Для того чтоб использовать
- $this->khcache->generatekey(): Делает Идентификатор Кеша чтоб потом мы смогли достать его.
- $this->khcache->store($key, $data, $ttl): Сохраняет ($data) под идентификатром ($key) на время $ttl секунд в Кеш.
- $this->khcache->call($func, $args, $ttl): Делает функцию ($func) с аргументами ($args, Typ: Array) и сохраняет ответ на $ttl Секунд в кеш.
- $this->khcache->fetch($key):Читает элемент информации, который под ключом $key спрятан в кеше.
- $this->khcache->delete($key): Удаляет элемент информации под ключом $key из кеша.
- $this->khcache->delete_all($key): Удаляет все элементы из Кеша.
- $this->khcache->get_hits(): Дает все успешные вызовы функции кеша (Benchmarking).
- $this->khcache->get_misses(): Дает количество безуспешных вызовов (Benchmarking).
Надеюсь Понятно перевел.
3. Плагины Контейнеров¶
Если ты XCache как контейнер хочешь юзать, то введи след код в конце библиотекы
1 /**
2 * Khaos :: KhCache :: XCache
3 *
4 * Wraps the XCache extension so it can be used
5 * as an KhCache Container.
6 *
7 */
8 class KH_Cache_XCache
9 {
10 /**
11 * Constructor
12 *
13 * @param array $options Container Options
14 *
15 * @return KH_Cache_XCache
16 */
17 function __construct($options)
18 {
19 // Ensure XCache is available
20 if (!extension_loaded('xcache') || !ini_get('xcache.cacher') || ini_get('xcache.var_size') == 0)
21 show_error('Khaos :: Cache :: XCache - One or more of the required XCACHE functions
22 is unavailable.');
23 }
24
25 /**
26 * Store Cache Item
27 *
28 * @param string $key
29 * @param mixed $data
30 * @param int $ttl
31 *
32 * @return bool
33 * @access public
34 */
35 function Store($key, $data, $ttl)
36 {
37 return xcache_set($key, serialize($data), $ttl);
38 }
39
40 /**
41 * Fetch Cache Item
42 *
43 * @param string $key
44 *
45 * @return mixed
46 * @access public
47 */
48 function Fetch($key)
49 {
50 return (($ret = xcache_get($key)) !== false)?unserialize($ret):false;
51 }
52
53 /**
54 * Delete Cache Item
55 *
56 * @param string $key
57 *
58 * @return bool
59 * @access public
60 */
61 function Delete($key)
62 {
63 return xcache_unset($key);
64 }
65
66 /**
67 * Delete All Cache Items
68 *
69 * @return bool
70 * @access public
71 */
72 function DeleteAll()
73 {
74 $xcache_auth = ini_get('xcache.admin.enable_auth');
75 ini_set('xcache.admin.enable_auth', 0);
76 for ($v=0; ini_get('xcache.var_count'); $v++)
77 xcache_clear_cache(XC_TYPE_VAR, $v);
78 ini_set('xcache.admin.enable_auth', $xcache_auth);
79 return true;
80 }
81 }
Для eAccelerator введи это (ВНИМАНИЕ: delete_all не будет поддержан):
1 // ------------------------------------------------------------------------
2
3 /**
4 * Khaos :: KhCache :: Eaccelerator
5 *
6 * Wraps the Eaccelerator extension so it can be used
7 * as an KhCache Container.
8 *
9 */
10 class KH_Cache_Eaccelerator
11 {
12 /**
13 * Constructor
14 *
15 * @param array $options Container Options
16 *
17 * @return KH_Cache_Eaccelerator
18 */
19 function KH_Cache_Eaccelerator($options)
20 {
21 // Ensure Eaccelerator is available
22 if (!function_exists('eaccelerator_put')
23 || !function_exists('eaccelerator_get')
24 || !function_exists('eaccelerator_rm'))
25 show_error('Khaos :: Cache :: Eaccelerator - One or more of the required Eaccelerator functions
26 is unavailable.');
27 }
28
29 /**
30 * Store Cache Item
31 *
32 * @param string $key
33 * @param mixed $data
34 * @param int $ttl
35 *
36 * @return bool
37 * @access public
38 */
39 function Store($key, $data, $ttl)
40 {
41 return eaccelerator_put($key, serialize($data), $ttl);
42 }
43
44 /**
45 * Fetch Cache Item
46 *
47 * @param string $key
48 *
49 * @return mixed
50 * @access public
51 */
52 function Fetch($key)
53 {
54 return (($ret = eaccelerator_get($key)) !== NULL) ? unserialize($ret) : FALSE;
55 }
56
57 /**
58 * Delete Cache Item
59 *
60 * @param string $key
61 *
62 * @return bool
63 * @access public
64 */
65 function Delete($key)
66 {
67 return eaccelerator_rm($key);
68 }
69
70 /**
71 * Delete All Cache Items
72 *
73 * @return bool
74 * @access public
75 */
76 function DeleteAll()
77 {
78 //return apc_clear_cache('user');
79 //Not available in eaccelerator
80 return FALSE;
81 }
82 }
Ну все если че, и ты по немецки понимаешь то плиз читай вот это: http://wiki.codeigniter.ch/wiki/ci-wiki/Partielles_Caching_mit_KhCache