Modules
Cache_Wincache
extends Kohana_Cache_Wincache
extends Cache
extends Kohana_Cache
Kohana Cache Wincache driver. Provides an opcode based driver for the Kohana Cache library.
Configuration example
Below is an example of an wincache server configuration.
return array(
'wincache' => array( // Driver group
'driver' => 'wincache', // using wincache 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
- Windows XP SP3 with IIS 5.1 and » FastCGI Extension
- Windows Server 2003 with IIS 6.0 and » FastCGI Extension
- Windows Vista SP1 with IIS 7.0 and FastCGI Module
- Windows Server 2008 with IIS 7.0 and FastCGI Module
- Windows 7 with IIS 7.5 and FastCGI Module
- Windows Server 2008 R2 with IIS 7.5 and FastCGI Module
- PHP 5.2.X, Non-thread-safe build
- PHP 5.3 X86, Non-thread-safe VC9 build
Class declared in MODPATH/cache/classes/cache/wincache.php on line 3.
Constants
Properties
Constants
DEFAULT_EXPIRE
integer 3600
Properties
public static
string$defaultdefault driver to use
string(4) "file"public static
Kohana_Cache$instancesinstances
array(0)protected
Kohana_Config$_config
Methods
public delete( string $id ) (defined in Kohana_Cache_Wincache)
Delete a cache entry based on id
// Delete 'foo' entry from the wincache group
Cache::instance('wincache')->delete('foo');
Parameters
-
string$id required - Id to remove from cache
Return Values
boolean
Source Code
public function delete($id)
{
return wincache_ucache_delete($this->_sanitize_id($id));
}
public delete_all( ) (defined in Kohana_Cache_Wincache)
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 wincache group
Cache::instance('wincache')->delete_all();
Return Values
boolean
Source Code
public function delete_all()
{
return wincache_ucache_clear();
}
public get( string $id [, string $default = NULL ] ) (defined in Kohana_Cache_Wincache)
Retrieve a cached value entry by id.
// Retrieve cache entry from wincache group
$data = Cache::instance('wincache')->get('foo');
// Retrieve cache entry from wincache group and return 'bar' if miss
$data = Cache::instance('wincache')->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 = wincache_ucache_get($this->_sanitize_id($id), $success);
return $success ? $data : $default;
}
public set( string $id , string $data [, integer $lifetime = NULL ] ) (defined in Kohana_Cache_Wincache)
Set a value to cache with id and lifetime
$data = 'bar';
// Set 'bar' to 'foo' in wincache group, using default expiry
Cache::instance('wincache')->set('foo', $data);
// Set 'bar' to 'foo' in wincache group for 30 seconds
Cache::instance('wincache')->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 wincache_ucache_set($this->_sanitize_id($id), $data, $lifetime);
}
public __clone( ) (defined in Kohana_Cache)
Overload the __clone() method to prevent cloning
Tags
Return Values
void
Source Code
public function __clone()
{
throw new Kohana_Cache_Exception('Cloning of Kohana_Cache objects is forbidden');
}
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
Kohana_Cache
Source Code
public static function instance($group = NULL)
{
// 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('cache');
if ( ! $config->offsetExists($group))
{
throw new Kohana_Cache_Exception('Failed to load Kohana Cache group: :group', array(':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_Wincache)
Check for existence of the wincache 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('wincache'))
{
throw new Kohana_Cache_Exception('PHP wincache extension is not available.');
}
parent::__construct($config);
}
protected _sanitize_id( string $id ) (defined in Kohana_Cache)
Replaces troublesome characters with underscores.
// 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)
{
// Change slashes and spaces to underscores
return str_replace(array('/', '\\', ' '), '_', $id);
}