?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
CodeIgniter以一些最流行的快速和動(dòng)態(tài)緩存形式為特色。除了基于文件的緩存之外,所有的都需要特定的服務(wù)器要求,并且如果服務(wù)器要求未得到滿足,則會(huì)引發(fā)致命異常。
使用示例
類參考
驅(qū)動(dòng)程序
替代PHP緩存(APC)緩存
基于文件的緩存
Memcached緩存
WinCache緩存
Redis緩存
虛擬緩存
以下示例將加載緩存驅(qū)動(dòng)程序,將APC指定為要使用的驅(qū)動(dòng)程序,并且如果APC在主機(jī)環(huán)境中不可用,則回退到基于文件的緩存。
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file')); if ( ! $foo = $this->cache->get('foo')){ echo 'Saving to the cache!<br />'; $foo = 'foobarbaz!'; // Save into the cache for 5 minutes $this->cache->save('foo', $foo, 300);}echo $foo;
您也可以通過(guò)key_prefix設(shè)置為緩存項(xiàng)名稱添加前綴,這有助于避免在同一環(huán)境中運(yùn)行多個(gè)應(yīng)用程序時(shí)發(fā)生沖突。
$this->load->driver('cache',array('adapter' => 'apc', 'backup' => 'file', 'key_prefix' => 'my_')); $this->cache->get('foo'); // Will get the cache entry named 'my_foo'
class CI_Cacheis_supported($driver)
參數(shù): | $ driver(string) - 緩存驅(qū)動(dòng)程序的名稱 |
---|---|
返回: | 如果支持則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ driver(string) - 緩存驅(qū)動(dòng)程序的名稱
返回:如果支持則返回TRUE,否則返回FALSE
返回類型:布爾值
當(dāng)通過(guò)`$ this-> cache-> get()`訪問(wèn)驅(qū)動(dòng)程序時(shí),會(huì)自動(dòng)調(diào)用此方法。但是,如果使用各個(gè)驅(qū)動(dòng)程序,請(qǐng)務(wù)必調(diào)用此方法以確保主機(jī)環(huán)境中支持驅(qū)動(dòng)程序。
if($ this-> cache-> apc-> is_supported()){
if($ data = $ this-> cache-> apc-> get('my_cache')){//做事情。
}
}
get($id)
參數(shù): | $ id(字符串) - 緩存項(xiàng)目名稱 |
---|---|
返回: | 如果未找到項(xiàng)目值或FALSE |
返回類型: | 雜 |
$ id(字符串) - 緩存項(xiàng)目名稱
返回:如果未找到,則返回項(xiàng)目值或FALSE
返回類型:混合
此方法將嘗試從緩存存儲(chǔ)中獲取項(xiàng)目。如果該項(xiàng)目不存在,該方法將返回FALSE。
$foo = $this->cache->get('my_cached_item');
save($id, $data[, $ttl = 60[, $raw = FALSE]])
參數(shù): | $ id(string) - 緩存項(xiàng)目名稱$ data(mixed) - 要保存的數(shù)據(jù)$ ttl(int) - 生存時(shí)間,以秒為單位(默認(rèn)為60)$ raw(bool) - 是否存儲(chǔ)原始值 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 串 |
$ id(字符串) - 緩存項(xiàng)目名稱
$ data(混合) - 要保存的數(shù)據(jù)
$ ttl(int) - 生存時(shí)間,以秒為單位(默認(rèn)值為60)
$ raw(bool) - 是否存儲(chǔ)原始值
返回:成功時(shí)為TRUE,失敗時(shí)為FALSE
返回類型:字符串
該方法將把一個(gè)項(xiàng)目保存到緩存存儲(chǔ)中。如果保存失敗,該方法將返回FALSE。
$ this-> cache-> save('cache_item_id','data_to_cache');
注意
該$raw
參數(shù)僅供APC和Memcache使用,以允許使用increment()
和decrement()
。
delete($id)
參數(shù): | $ id(字符串) - 緩存項(xiàng)目的名稱 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ id(字符串) - 緩存項(xiàng)目的名稱
返回:成功時(shí)為TRUE,失敗時(shí)為FALSE
返回類型:布爾值
此方法將從緩存存儲(chǔ)中刪除特定的項(xiàng)目。如果項(xiàng)目刪除失敗,該方法將返回FALSE。
$this->cache->delete('cache_item_id');
increment($id[, $offset = 1])
參數(shù): | $ id(字符串) - 緩存ID $偏移量(整數(shù)) - 要添加的步驟/值 |
---|---|
返回: | 成功的新價(jià)值,失敗時(shí)失敗 |
返回類型: | 雜 |
$ id(字符串) - 緩存ID
$ offset(int) - 要添加的步驟/值
返回:成功的新值,失敗時(shí)的FALSE
返回類型:混合
執(zhí)行原始存儲(chǔ)值的原子增量。
//'iterator'的值為2 $ this-> cache-> increment('iterator'); //'iterator'現(xiàn)在是3
$ this-> cache-> increment('iterator',3); //'迭代器'現(xiàn)在是6
decrement($id[, $offset = 1])
參數(shù): | $ id(字符串) - 緩存ID $偏移量(整數(shù)) - 步驟/值減少 |
---|---|
返回: | 成功的新價(jià)值,失敗時(shí)失敗 |
返回類型: | 雜 |
$ id(字符串) - 緩存ID
$ offset(int) - 要減少的步驟/值
返回:成功的新值,失敗時(shí)的FALSE
返回類型:混合
執(zhí)行原始存儲(chǔ)值的原子減量。
//'iterator'的值為6 $ this-> cache-> decrement('iterator'); //'iterator'現(xiàn)在是5 $ this-> cache-> decrement('iterator',2); //'迭代器'現(xiàn)在是3
clean()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
cache_info()
返回: | 有關(guān)整個(gè)緩存數(shù)據(jù)庫(kù)的信息 |
---|---|
返回類型: | 雜 |
get_metadata($id)
參數(shù): | $ id(字符串) - 緩存項(xiàng)目名稱 |
---|---|
返回: | 已緩存項(xiàng)目的元數(shù)據(jù) |
返回類型: | 雜 |
$ id(字符串) - 緩存項(xiàng)目名稱
返回:緩存項(xiàng)目的元數(shù)據(jù)
返回類型:混合
此方法將返回緩存中特定項(xiàng)目的詳細(xì)信息。
var_dump($this->cache->get_metadata('my_cached_item'));
Note
返回的信息和數(shù)據(jù)的結(jié)構(gòu)取決于正在使用哪個(gè)適配器。
上面列出的所有方法都可以在沒(méi)有將特定適配器傳遞給驅(qū)動(dòng)程序加載器的情況下訪問(wèn),如下所示
$this->load->driver('cache');$this->cache->apc->save('foo', 'bar', 10);
與輸出類的緩存不同,驅(qū)動(dòng)程序基于文件的緩存允許緩存多段視圖文件。謹(jǐn)慎使用這一點(diǎn),并確保對(duì)應(yīng)用程序進(jìn)行基準(zhǔn)測(cè)試,因?yàn)榇疟PI / O將通過(guò)緩存取消積極成果。
上面列出的所有方法都可以在沒(méi)有將特定適配器傳遞給驅(qū)動(dòng)程序加載器的情況下訪問(wèn),如下所示
$this->load->driver('cache');$this->cache->file->save('foo', 'bar', 10);
可以在位于_application / config / *目錄中的memcached.php配置文件中指定多個(gè)Memcached服務(wù)器。
上面列出的所有方法都可以在沒(méi)有將特定適配器傳遞給驅(qū)動(dòng)程序加載器的情況下訪問(wèn),如下所示
$this->load->driver('cache');$this->cache->memcached->save('foo', 'bar', 10);
在Windows下,您也可以使用WinCache驅(qū)動(dòng)程序。
上面列出的所有方法都可以在沒(méi)有將特定適配器傳遞給驅(qū)動(dòng)程序加載器的情況下訪問(wèn),如下所示
$this->load->driver('cache');$this->cache->wincache->save('foo', 'bar', 10);
Redis是一款內(nèi)存鍵值存儲(chǔ)器,可以在LRU緩存模式下運(yùn)行。要使用它,您需要Redis服務(wù)器和phpredis PHP擴(kuò)展。
連接到redis服務(wù)器的配置選項(xiàng)必須存儲(chǔ)在application / config / redis.php文件中??捎玫倪x項(xiàng)有:
$config['socket_type'] = 'tcp'; //`tcp` or `unix` $config['socket'] = '/var/run/redis.sock'; // in case of `unix` socket type $config['host'] = '127.0.0.1'; $config['password'] = NULL; $config['port'] = 6379; $config['timeout'] = 0;
上面列出的所有方法都可以在沒(méi)有將特定適配器傳遞給驅(qū)動(dòng)程序加載器的情況下訪問(wèn),如下所示
$this->load->driver('cache'); $this->cache->redis->save('foo', 'bar', 10);
這是一個(gè)總是“錯(cuò)過(guò)”的緩存后端。它不存儲(chǔ)數(shù)據(jù),但可以讓您在不支持所選緩存的環(huán)境中保留緩存代碼。