## Class TSqliteCache

Description

TSqliteCache class

TSqliteCache implements a cache application module based on SQLite database.

To use this module, the sqlite PHP extension must be loaded. Note, Sqlite extension is no longer loaded by default since PHP 5.1.

Sine PRADO v3.1.0, a new DB-based cache module called TDbCache is provided. If you have PDO extension installed, you may consider using the new cache module instead as it allows you to use different database to store the cached data.

The database file is specified by the DbFile property. If not set, the database file will be created under the system state path. If the specified database file does not exist, it will be created automatically. Make sure the directory containing the specified DB file and the file itself is writable by the Web server process.

The following basic cache operations are implemented:

- get : retrieve the value with a key (if any) from cache
- set : store the value with a key into cache
- add : store the value only if cache does not have this key
- delete : delete the value with the specified key from cache
- flush : delete all values from cache

Each value is associated with an expiration time. The get operation ensures that any expired value will not be returned. The expiration time by the number of seconds. A expiration time 0 represents never expire.

By definition, cache does not ensure the existence of a value even if it never expires. Cache is not meant to be an persistent storage.

Do not use the same database file for multiple applications using TSqliteCache. Also note, cache is shared by all user sessions of an application.

Some usage examples of TSqliteCache are as follows,

     $cache=new TSqliteCache;  // TSqliteCache may also be loaded as a Prado application module
      $cache->setDbFile($dbFilePath);
     $cache->init(null);
     $cache->add('object',$object);
     $object2=$cache->get('object');

If loaded, TSqliteCache will register itself with TApplication as the cache module. It can be accessed via TApplication::getCache().

TSqliteCache may be configured in application configuration file as follows

     <module id="cache" class="System.Caching.TSqliteCache" DbFile="Application.Data.site" />

where DbFile is a property specifying the location of the SQLite DB file (in the namespace format).

- since: 3.0
- version: $Id: TSqliteCache.php 2337 2007-11-26 12:40:48Z xue $
- author: Qiang Xue <qiang.xue@gmail.com>

Located in /Caching/TSqliteCache.php (line 73)

    TComponent
       |
       --TApplicationComponent
          |
          --TModule
             |
             --TCache
                |
                --TSqliteCache

Class Constant Summary
CACHE_TABLE = 'cache'
DB_FILE_EXT = '.db'
Method Summary
void __destruct ()
boolean addValue (string $key, string $value, integer $expire)
boolean deleteValue (string $key)
void flush ()
string getDbFile ()
string getValue (string $key)
void init (TXmlElement $config)
void setDbFile (string $value)
boolean setValue (string $key, string $value, integer $expire)
Methods
Destructor __destruct (line 101)

Destructor.

Disconnect the db connection.

- access: public

void __destruct ()
addValue (line 195)

Stores a value identified by a key into cache if the cache does not contain this key.

This is the implementation of the method declared in the parent class.

- return: true if the value is successfully stored into cache, false otherwise
- access: protected

boolean addValue (string $key, string $value, integer $expire)

- string $key: the key identifying the value to be cached
- string $value: the value to be cached
- integer $expire: the number of seconds in which the cached value will expire. 0 means never expire.

Redefinition of:

TCache::addValue()
  Stores a value identified by a key into cache if the cache does not contain this key.

deleteValue (line 208)

Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.

- return: if no error happens during deletion
- access: protected

boolean deleteValue (string $key)

- string $key: the key of the value to be deleted

Redefinition of:

TCache::deleteValue()
  Deletes a value with the specified key from cache This method should be implemented by child classes to delete the data from actual cache storage.

flush (line 218)

Deletes all values from cache.

Be careful of performing this operation if the cache is shared by multiple applications.

- access: public

void flush ()

Redefinition of:

TCache::flush()
  Deletes all values from cache.

getDbFile (line 137)

- return: database file path (in namespace form)
- access: public

string getDbFile ()
getValue (line 161)

Retrieves a value from cache with a specified key.

This is the implementation of the method declared in the parent class.

- return: the value stored in cache, false if the value is not in the cache or expired.
- access: protected

string getValue (string $key)

- string $key: a unique key identifying the cached value

Redefinition of:

TCache::getValue()
  Retrieves a value from cache with a specified key.

init (line 116)

Initializes this module.

This method is required by the IModule interface. It checks if the DbFile property is set, and creates a SQLiteDatabase instance for it. The database or the cache table does not exist, they will be created. Expired values are also deleted.

- access: public
- throws: TConfigurationException if sqlite extension is not installed, DbFile is set invalid, or any error happens during creating database or cache table.

void init (TXmlElement $config)

- TXmlElement $config: configuration for this module, can be null

Redefinition of:

TCache::init()
  Initializes the cache module.

setDbFile (line 147)

- access: public
- throws: TInvalidOperationException if the module is already initialized
- throws: TConfigurationException if the file is not in proper namespace format

void setDbFile (string $value)

- string $value: database file path (in namespace form)

setValue (line 179)

Stores a value identified by a key in cache.

This is the implementation of the method declared in the parent class.

- return: true if the value is successfully stored into cache, false otherwise
- access: protected

boolean setValue (string $key, string $value, integer $expire)

- string $key: the key identifying the value to be cached
- string $value: the value to be cached
- integer $expire: the number of seconds in which the cached value will expire. 0 means never expire.

Redefinition of:

TCache::setValue()
  Stores a value identified by a key in cache.

#### Inherited Methods

Inherited From TCache

> TCache::add()
> TCache::addValue()
> TCache::delete()
> TCache::deleteValue()
> TCache::flush()
> TCache::generateUniqueKey()
> TCache::get()
> TCache::getKeyPrefix()
> TCache::getPrimaryCache()
> TCache::getValue()
> TCache::init()
> TCache::offsetExists()
> TCache::offsetGet()
> TCache::offsetSet()
> TCache::offsetUnset()
> TCache::set()
> TCache::setKeyPrefix()
> TCache::setPrimaryCache()
> TCache::setValue()

Inherited From TModule

> TModule::getID()
> TModule::init()
> TModule::setID()

Inherited From TApplicationComponent

> TApplicationComponent::getApplication()
> TApplicationComponent::getRequest()
> TApplicationComponent::getResponse()
> TApplicationComponent::getService()
> TApplicationComponent::getSession()
> TApplicationComponent::getUser()
> TApplicationComponent::publishAsset()
> TApplicationComponent::publishFilePath()

Inherited From TComponent

> TComponent::addParsedObject()
> TComponent::attachEventHandler()
> TComponent::canGetProperty()
> TComponent::canSetProperty()
> TComponent::createdOnTemplate()
> TComponent::detachEventHandler()
> TComponent::evaluateExpression()
> TComponent::evaluateStatements()
> TComponent::getEventHandlers()
> TComponent::getSubProperty()
> TComponent::hasEvent()
> TComponent::hasEventHandler()
> TComponent::hasProperty()
> TComponent::raiseEvent()
> TComponent::setSubProperty()
> TComponent::__get()
> TComponent::__set()

Class Constants
CACHE_TABLE = 'cache' (line 78)

name of the table storing cache data

DB_FILE_EXT = '.db' (line 82)

extension of the db file name

Documentation generated on Mon, 21 Apr 2008 11:36:14 -0400 by phpDocumentor 1.3.0RC4