캐싱드라이버 Caching Driver ¶
CodeIgniter는 몇 가지 가장 인기있는 형식의 빠른 동적 캐싱에 대한 래퍼를 제공합니다. 파일 기반 캐싱 이외는 특정한 서버 요구 사항이 필요합니다. 만약 필요한 요구사항이 만족되지 않으면 치명적인 예외를 던집니다.
사용 예제¶
다음의 예는, 캐시 드라이버를 로드하고, 사용하는 드라이버로 APC를 지정하고,APC를 사용할 수 없는 경우 파일 기반 캐싱으로 대체합니다.
$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 설정을 통해, 같은 환경에서 여러 어플리케이션을 사용할 때, 캐시 접두어 사용으로 중복을 방지할 수 있습니다.
$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_Cache¶
- is_supported($driver)¶
인수: - $driver (string) – the name of the caching driver
반환값: TRUE if supported, FALSE if not
반환형: bool
이 함수는 $this->cache->get()를 통해 드라이버에 접근할 때 자동으로 호출됩니다. 그러나, 만약 별도의 드라이버를 사용하는 경우이 함수를 호출하여 드라이버가 서버 환경에서 지원되는지 확인하십시오.
if ($this->cache->apc->is_supported() { if ($data = $this->cache->apc->get('my_cache')) { // do things. } }
- get($id)¶
인수: - $id (string) – Cache item name
반환값: Item value or FALSE if not found
반환형: mixed
이 함수는 캐시에서 한 항목을 가져옵니다. 만약 해당 항목이없는 경우, 이 메소드는FALSE 을 반환합니다.
$foo = $this->cache->get('my_cached_item');
- save($id, $data[, $ttl = 60[, $raw = FALSE]])¶
인수: - $id (string) – Cache item name
- $data (mixed) – the data to save
- $ttl (int) – Time To Live, in seconds (default 60)
- $raw (bool) – Whether to store the raw value
반환값: TRUE on success, FALSE on failure
반환형: 문자열
캐시에 한 항목을 저장합니다. 저장에 실패하면FALSE를 리턴합니다.
$this->cache->save('cache_item_id', 'data_to_cache');
Note
$raw 파라미터는 increment() 와 decrement() 를 사용하기 위해, APC 와 Memcache 에서만 사용됩니다.
- delete($id)¶
인수: - $id (string) – name of cached item
반환값: TRUE on success, FALSE on failure
반환형: bool
캐시에서 지정한 항목을 제거합니다.제거에 실패하면 FALSE를 리턴합니다.
$this->cache->delete('cache_item_id');
- increment($id[, $offset = 1])¶
인수: - $id (string) – Cache ID
- $offset (int) – Step/value to add
반환값: New value on success, FALSE on failure
반환형: mixed
원시 저장된 값의 증가를 실행합니다.
// 'iterator' has a value of 2 $this->cache->increment('iterator'); // 'iterator' is now 3 $this->cache->increment('iterator', 3); // 'iterator' is now 6
- decrement($id[, $offset = 1])¶
인수: - $id (string) – Cache ID
- $offset (int) – Step/value to reduce by
반환값: New value on success, FALSE on failure
반환형: mixed
원시 저장된 값의 감소를 실행합니다.
// 'iterator' has a value of 6 $this->cache->decrement('iterator'); // 'iterator' is now 5 $this->cache->decrement('iterator', 2); // 'iterator' is now 3
- clean()¶
반환값: TRUE on success, FALSE on failure 반환형: bool 이 함수는 전체 캐시를 삭제합니다. 만약 캐시 파일 삭제에 실패하면 FALSE를 반환합니다.
$this->cache->clean();
- cache_info()¶
반환값: Information on the entire cache database 반환형: mixed 이 함수는 전체 캐시 정보를 반환합니다.
var_dump($this->cache->cache_info());
Note
반환된 정보와 데이터의 구조는 어떤 아답터를 사용하고 있는지에 따라 의존합니다.
- get_metadata($id)¶
인수: - $id (string) – Cache item name
반환값: Metadata for the cached item
반환형: mixed
이 함수는 캐시의 특정 항목에 대한 자세한 정보를 반환합니다.
var_dump($this->cache->get_metadata('my_cached_item'));
Note
반환된 정보와 데이터의 구조는 아답타의 종류에 따라 결정됩니다.
드라이버 Drivers¶
Alternative PHP Cache (APC) 캐싱¶
위에서 설명한 함수들은 아래와 같이 특정 어댑터를 지정하지 않고 사용할 수 있습니다:
$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);
APC에 대한 더 자세한 정보는 http://php.net/apc 를 참조하십시오.
파일기반 캐싱¶
출력 클래스의 캐싱과 달리 파일 기반 캐싱 드라이버는 뷰파일의 일부를 캐시할 수 있습니다. 파일기반의 캐싱은 주의해서 사용해야 합니다. 디스크에 읽고 쓰는 것이 너무 빈번해져 캐싱의 효과를 넘어서버릴 수 있습니다.
위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:
$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);
Memcached 캐싱¶
application/config/ 에 있는 memcached.php 설정파일에 여러 개의 메모리캐싱서버를 지정할 수 있습니다.
위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);
Memcached 에 대한 더 자세한 정보는 http://php.net/memcached 를 참조하십시오.
WinCache 캐싱¶
윈도우 환경에서, WinCache 드라이버를 사용할 수 있습니다.
위에서 설명한 모든 함수는 다음과 같이 특정 어댑터를 드라이버 로더에 지정하지 않고 사용할 수 있습니다:
$this->load->driver('cache');
$this->cache->wincache->save('foo', 'bar', 10);
WinCache 에 대한 더 자세한 정보는 http://php.net/wincache 를 참조하십시오.
Redis 캐싱¶
Redis 는 LRU 캐시 모드에서 작동 할 수 있는 메모리 키 - 값 저장소입니다. 사용하기 위해서는 Redis 서버와 phpredis PHP extension이 필요합니다.
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);
WinCache 에 대한 더 자세한 정보는 http://redis.io 를 참조하십시오.