Kohana_Cache_Apc
extends Cache
extends Kohana_Cache
Implements: Cache_Arithmetic | Kohana_Cache_Arithmetic
Kohana Cache APC driver. Provides an opcode based driver for the Kohana Cache library.
Configuration example
Below is an example of an apc server configuration.
return array(
'apc' => array( // Driver group
'driver' => 'apc', // using APC driver
),
)
In cases where only one cache group is required, if the group is named default
there is
no need to pass the group name when instantiating a cache instance.
General cache group configuration settings
Below are the settings available to all types of cache driver.
Name | Required | Description |
---|---|---|
driver | YES | (string) The driver type to use |
System requirements
- Kohana 3.0.x
- PHP 5.2.4 or greater
- APC PHP extension
Constants
Properties
Constants
-
DEFAULT_EXPIRE
integer 3600
Properties
-
public static string $default
-
default driver to use
-
string(4) "file"
-
public static Kohana_Cache $instances
-
instances
-
array(0)
-
protected Config $_config
-
Default value:
array(0)
Methods
public decrement(string $id [, int $step = integer 1 ] ) (defined in Kohana_Cache_Apc)
Decrements a given value by the step value supplied. Useful for shared counters and other persistent integer based tracking.
Parameters
- string $id required - Id of cache entry to decrement
- int $step = integer 1 - Step value to decrement by
Return Values
- integer
- boolean
Source Code
public function decrement($id, $step = 1)
{
return apc_dec($id, $step);
}
public delete(string $id ) (defined in Kohana_Cache_Apc)
Delete a cache entry based on id
// Delete 'foo' entry from the apc group
Cache::instance('apc')->delete('foo');
Parameters
- string $id required - Id to remove from cache
Return Values
- boolean
Source Code
public function delete($id)
{
return apc_delete($this->_sanitize_id($id));
}
public delete_all() (defined in Kohana_Cache_Apc)
Delete all cache entries.
Beware of using this method when using shared memory cache systems, as it will wipe every entry within the system for all clients.
// Delete all cache entries in the apc group
Cache::instance('apc')->delete_all();
Return Values
- boolean
Source Code
public function delete_all()
{
return apc_clear_cache('user');
}
public get(string $id [, string $default = NULL ] ) (defined in Kohana_Cache_Apc)
Retrieve a cached value entry by id.
// Retrieve cache entry from apc group
$data = Cache::instance('apc')->get('foo');
// Retrieve cache entry from apc group and return 'bar' if miss
$data = Cache::instance('apc')->get('foo', 'bar');
Parameters
- string $id required - Id of cache to entry
- string $default = NULL - Default value to return if cache miss
Tags
Return Values
- mixed
Source Code
public function get($id, $default = NULL)
{
$data = apc_fetch($this->_sanitize_id($id), $success);
return $success ? $data : $default;
}
public increment(string $id [, int $step = integer 1 ] ) (defined in Kohana_Cache_Apc)
Increments a given value by the step value supplied. Useful for shared counters and other persistent integer based tracking.
Parameters
- string $id required - Id of cache entry to increment
- int $step = integer 1 - Step value to increment by
Return Values
- integer
- boolean
Source Code
public function increment($id, $step = 1)
{
return apc_inc($id, $step);
}
public set(string $id , string $data [, integer $lifetime = NULL ] ) (defined in Kohana_Cache_Apc)
Set a value to cache with id and lifetime
$data = 'bar';
// Set 'bar' to 'foo' in apc group, using default expiry
Cache::instance('apc')->set('foo', $data);
// Set 'bar' to 'foo' in apc group for 30 seconds
Cache::instance('apc')->set('foo', $data, 30);
Parameters
- string $id required - Id of cache entry
- string $data required - Data to set to cache
- integer $lifetime = NULL - Lifetime in seconds
Return Values
- boolean
Source Code
public function set($id, $data, $lifetime = NULL)
{
if ($lifetime === NULL)
{
$lifetime = Arr::get($this->_config, 'default_expire', Cache::DEFAULT_EXPIRE);
}
return apc_store($this->_sanitize_id($id), $data, $lifetime);
}
final public __clone() (defined in Kohana_Cache)
Overload the __clone() method to prevent cloning
Tags
Return Values
- void
Source Code
final public function __clone()
{
throw new Cache_Exception('Cloning of Kohana_Cache objects is forbidden');
}
public config([ mixed $key = NULL , mixed $value = NULL ] ) (defined in Kohana_Cache)
Getter and setter for the configuration. If no argument provided, the current configuration is returned. Otherwise the configuration is set to this class.
// Overwrite all configuration
$cache->config(array('driver' => 'memcache', '...'));
// Set a new configuration setting
$cache->config('servers', array(
'foo' => 'bar',
'...'
));
// Get a configuration setting
$servers = $cache->config('servers);
Parameters
- mixed $key = NULL - Key to set to array, either array or config path
- mixed $value = NULL - Value to associate with key
Return Values
- mixed
Source Code
public function config($key = NULL, $value = NULL)
{
if ($key === NULL)
return $this->_config;
if (is_array($key))
{
$this->_config = $key;
}
else
{
if ($value === NULL)
return Arr::get($this->_config, $key);
$this->_config[$key] = $value;
}
return $this;
}
public static instance([ string $group = NULL ] ) (defined in Kohana_Cache)
Creates a singleton of a Kohana Cache group. If no group is supplied the default cache group is used.
// Create an instance of the default group
$default_group = Cache::instance();
// Create an instance of a group
$foo_group = Cache::instance('foo');
// Access an instantiated group directly
$foo_group = Cache::$instances['default'];
Parameters
- string $group = NULL - The name of the cache group to use [Optional]
Tags
Return Values
- Cache
Source Code
public static function instance($group = NULL)
{
// If there is no group supplied, try to get it from the config
if ($group === NULL)
{
$group = Kohana::$config->load('cache.default');
}
// If there is no group supplied
if ($group === NULL)
{
// Use the default setting
$group = Cache::$default;
}
if (isset(Cache::$instances[$group]))
{
// Return the current group if initiated already
return Cache::$instances[$group];
}
$config = Kohana::$config->load('cache');
if ( ! $config->offsetExists($group))
{
throw new Cache_Exception(
'Failed to load Kohana Cache group: :group',
[':group' => $group]
);
}
$config = $config->get($group);
// Create a new cache type instance
$cache_class = 'Cache_'.ucfirst($config['driver']);
Cache::$instances[$group] = new $cache_class($config);
// Return the instance
return Cache::$instances[$group];
}
protected __construct(array $config ) (defined in Kohana_Cache_Apc)
Check for existence of the APC extension This method cannot be invoked externally. The driver must
be instantiated using the Cache::instance()
method.
Parameters
- array $config required - Configuration
Tags
Source Code
protected function __construct(array $config)
{
if ( ! extension_loaded('apc'))
{
throw new Cache_Exception('PHP APC extension is not available.');
}
parent::__construct($config);
}
protected _sanitize_id(string $id ) (defined in Kohana_Cache)
Replaces troublesome characters with underscores and adds prefix to avoid duplicates
// Sanitize a cache id
$id = $this->_sanitize_id($id);
Parameters
- string $id required - Id of cache to sanitize
Return Values
- string
Source Code
protected function _sanitize_id($id)
{
// adding cache prefix to avoid duplicates
$prefix = '';
// configuration for the specific cache group
if (isset($this->_config['prefix']) AND $this->_config['prefix'] !== NULL)
{
$prefix = $this->_config['prefix'];
}
// prefix general configuration cache
else
{
$prefix = Kohana::$config->load('cache.prefix');
}
// sha1 the id makes sure name is not too long and has not any not allowed characters
return $prefix.sha1($id);
}