?
This document uses PHP Chinese website manual Release
CodeIgniter以一些最流行的快速和動態(tài)緩存形式為特色。除了基于文件的緩存之外,所有的都需要特定的服務器要求,并且如果服務器要求未得到滿足,則會引發(fā)致命異常。
使用示例
類參考
驅動程序
替代PHP緩存(APC)緩存
基于文件的緩存
Memcached緩存
WinCache緩存
Redis緩存
虛擬緩存
以下示例將加載緩存驅動程序,將APC指定為要使用的驅動程序,并且如果APC在主機環(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;
您也可以通過key_prefix設置為緩存項名稱添加前綴,這有助于避免在同一環(huán)境中運行多個應用程序時發(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) - 緩存驅動程序的名稱 |
---|---|
返回: | 如果支持則為TRUE,否則為FALSE |
返回類型: | 布爾 |
$ driver(string) - 緩存驅動程序的名稱
返回:如果支持則返回TRUE,否則返回FALSE
返回類型:布爾值
當通過`$ this-> cache-> get()`訪問驅動程序時,會自動調用此方法。但是,如果使用各個驅動程序,請務必調用此方法以確保主機環(huán)境中支持驅動程序。
if($ this-> cache-> apc-> is_supported()){
if($ data = $ this-> cache-> apc-> get('my_cache')){//做事情。
}
}
get($id)
參數(shù): | $ id(字符串) - 緩存項目名稱 |
---|---|
返回: | 如果未找到項目值或FALSE |
返回類型: | 雜 |
$ id(字符串) - 緩存項目名稱
返回:如果未找到,則返回項目值或FALSE
返回類型:混合
此方法將嘗試從緩存存儲中獲取項目。如果該項目不存在,該方法將返回FALSE。
$foo = $this->cache->get('my_cached_item');
save($id, $data[, $ttl = 60[, $raw = FALSE]])
參數(shù): | $ id(string) - 緩存項目名稱$ data(mixed) - 要保存的數(shù)據(jù)$ ttl(int) - 生存時間,以秒為單位(默認為60)$ raw(bool) - 是否存儲原始值 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 串 |
$ id(字符串) - 緩存項目名稱
$ data(混合) - 要保存的數(shù)據(jù)
$ ttl(int) - 生存時間,以秒為單位(默認值為60)
$ raw(bool) - 是否存儲原始值
返回:成功時為TRUE,失敗時為FALSE
返回類型:字符串
該方法將把一個項目保存到緩存存儲中。如果保存失敗,該方法將返回FALSE。
$ this-> cache-> save('cache_item_id','data_to_cache');
注意
該$raw
參數(shù)僅供APC和Memcache使用,以允許使用increment()
和decrement()
。
delete($id)
參數(shù): | $ id(字符串) - 緩存項目的名稱 |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ id(字符串) - 緩存項目的名稱
返回:成功時為TRUE,失敗時為FALSE
返回類型:布爾值
此方法將從緩存存儲中刪除特定的項目。如果項目刪除失敗,該方法將返回FALSE。
$this->cache->delete('cache_item_id');
increment($id[, $offset = 1])
參數(shù): | $ id(字符串) - 緩存ID $偏移量(整數(shù)) - 要添加的步驟/值 |
---|---|
返回: | 成功的新價值,失敗時失敗 |
返回類型: | 雜 |
$ id(字符串) - 緩存ID
$ offset(int) - 要添加的步驟/值
返回:成功的新值,失敗時的FALSE
返回類型:混合
執(zhí)行原始存儲值的原子增量。
//'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ù)) - 步驟/值減少 |
---|---|
返回: | 成功的新價值,失敗時失敗 |
返回類型: | 雜 |
$ id(字符串) - 緩存ID
$ offset(int) - 要減少的步驟/值
返回:成功的新值,失敗時的FALSE
返回類型:混合
執(zhí)行原始存儲值的原子減量。
//'iterator'的值為6 $ this-> cache-> decrement('iterator'); //'iterator'現(xiàn)在是5 $ this-> cache-> decrement('iterator',2); //'迭代器'現(xiàn)在是3
clean()
返回: | 成功為TRUE,失敗為FALSE |
---|---|
返回類型: | 布爾 |
cache_info()
返回: | 有關整個緩存數(shù)據(jù)庫的信息 |
---|---|
返回類型: | 雜 |
get_metadata($id)
參數(shù): | $ id(字符串) - 緩存項目名稱 |
---|---|
返回: | 已緩存項目的元數(shù)據(jù) |
返回類型: | 雜 |
$ id(字符串) - 緩存項目名稱
返回:緩存項目的元數(shù)據(jù)
返回類型:混合
此方法將返回緩存中特定項目的詳細信息。
var_dump($this->cache->get_metadata('my_cached_item'));
Note
返回的信息和數(shù)據(jù)的結構取決于正在使用哪個適配器。
上面列出的所有方法都可以在沒有將特定適配器傳遞給驅動程序加載器的情況下訪問,如下所示
$this->load->driver('cache');$this->cache->apc->save('foo', 'bar', 10);
與輸出類的緩存不同,驅動程序基于文件的緩存允許緩存多段視圖文件。謹慎使用這一點,并確保對應用程序進行基準測試,因為磁盤I / O將通過緩存取消積極成果。
上面列出的所有方法都可以在沒有將特定適配器傳遞給驅動程序加載器的情況下訪問,如下所示
$this->load->driver('cache');$this->cache->file->save('foo', 'bar', 10);
可以在位于_application / config / *目錄中的memcached.php配置文件中指定多個Memcached服務器。
上面列出的所有方法都可以在沒有將特定適配器傳遞給驅動程序加載器的情況下訪問,如下所示
$this->load->driver('cache');$this->cache->memcached->save('foo', 'bar', 10);
在Windows下,您也可以使用WinCache驅動程序。
上面列出的所有方法都可以在沒有將特定適配器傳遞給驅動程序加載器的情況下訪問,如下所示
$this->load->driver('cache');$this->cache->wincache->save('foo', 'bar', 10);
Redis是一款內存鍵值存儲器,可以在LRU緩存模式下運行。要使用它,您需要Redis服務器和phpredis PHP擴展。
連接到redis服務器的配置選項必須存儲在application / config / redis.php文件中。可用的選項有:
$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;
上面列出的所有方法都可以在沒有將特定適配器傳遞給驅動程序加載器的情況下訪問,如下所示
$this->load->driver('cache'); $this->cache->redis->save('foo', 'bar', 10);
這是一個總是“錯過”的緩存后端。它不存儲數(shù)據(jù),但可以讓您在不支持所選緩存的環(huán)境中保留緩存代碼。