- Home
- About
- Testimonials
- Demos
- Download
- Documentation
- Blogs
- Forum
- Support

Packages: default System System.Caching System.Collections System.Data System.Data.ActiveRecord System.Data.ActiveRecord.Relations System.Data.ActiveRecord.Scaffold System.Data.ActiveReecord.Scaffold.InputBuilder System.Data.Commom.Sqlite System.Data.Common System.Data.Common.Mssql System.Data.Common.Mysql System.Data.Common.Oracle System.Data.Common.Pgsql System.Data.Common.Sqlite System.Data.DataGateway System.Data.SqlMap System.Data.SqlMap.Configuration System.Data.SqlMap.Statements System.Exceptions System.I18N System.IO System.Security System.Util System.Web System.Web.Services System.Web.UI System.Web.UI.ActiveControls System.Web.UI.WebControls System.Web.UI.WebControls.assets System.Xml Classes: TAPCCache TApplicationStateCacheDependency TCache TCacheDependency TCacheDependencyList TChainedCacheDependency TDbCache TDirectoryCacheDependency TFileCacheDependency TGlobalStateCacheDependency TMemCache TSqliteCache TXCache |
Keyword
# Class TDbCache
    TComponent
       |
       --TApplicationComponent
          |
          --TModule
             |
             --TCache
                |
                --TDbCache
TDbCache class TDbCache implements a cache application module by storing cached data in a database. TDbCache relies on PDO to retrieve data from databases. In order to use TDbCache, you need to enable the PDO extension as well as the corresponding PDO DB driver. For example, to use SQLite database to store cached data, you need both php_pdo and php_pdo_sqlite extensions. By default, TDbCache creates and uses an SQLite database under the application runtime directory. You may change this default setting by specifying the following properties: ConnectionID or ConnectionString, Username and Pasword. The cached data is stored in a table in the specified database. By default, the name of the table is called 'pradocache'. If the table does not exist in the database, it will be automatically created with the following structure:

     CREATE TABLE pradocache (itemkey CHAR(128), value BLOB, expire INT)
     CREATE INDEX IX_itemkey ON pradocache (itemkey)
     CREATE INDEX IX_expire ON pradocache (expire)
Note, some DBMS might not support BLOB type. In this case, replace 'BLOB' with a suitable binary data type (e.g. LONGBLOB in MySQL, BYTEA in PostgreSQL.) Important: Make sure that the indices are non-unique! If you want to change the cache table name, or if you want to create the table by yourself, you may set CacheTableName and AutoCreateCacheTableName properties. FlushInterval control how often expired items will be removed from cache. If you prefer to remove expired items manualy e.g. via cronjob you can disable automatic deletion by setting FlushInterval to '0'. 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 TDbCache. Also note, cache is shared by all user sessions of an application. Some usage examples of TDbCache are as follows,

     $cache=new TDbCache;  // TDbCache may also be loaded as a Prado application module
      $cache->init(null);
     $cache->add('object',$object);
     $object2=$cache->get('object');
If loaded, TDbCache will register itself with TApplication as the cache module. It can be accessed via TApplication::getCache(). TDbCache may be configured in application configuration file as follows

     <module id="cache" class="System.Caching.TDbCache" />
Since: 3.1.0 Author: Qiang Xue <qiang.xue@gmail.com>
Method Summary
protected boolean | addValue ( string $key, string $value, integer $expire) Stores a value identified by a key into cache if the cache does not contain this key.
protected TDbConnection | createDbConnection ( string 0) Creates the DB connection.
protected boolean | deleteValue ( string $key) Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
void | doFlushCacheExpired () Event listener for TApplication.OnSaveState
void | doInitializeCache () Event listener for TApplication.OnLoadStateComplete
void | flush () Deletes all values from cache.
void | flushCacheExpired ( boolean $force) Flush expired values from cache depending on setFlushInterval
boolean | getAutoCreateCacheTable ()
string | getCacheTableName ()
string | getConnectionID ()
string | getConnectionString ()
TDbConnection | getDbConnection ()
integer | getFlushInterval ()
string | getPassword ()
string | getUsername ()
protected string | getValue ( string $key) Retrieves a value from cache with a specified key.
void | init ( TXmlElement $config) Initializes this module.
protected void | initializeCache ( boolean $force) Initialize TDbCache
void | setAutoCreateCacheTable ( boolean $value)
void | setCacheTableName ( string $value) Sets the name of the DB table to store cache content.
void | setConnectionID ( string $value) Sets the ID of a TDataSourceConfig module.
void | setConnectionString ( string $value)
void | setFlushInterval ( integer $value) Sets interval expired items will be removed from cache
void | setPassword ( string $value)
void | setUsername ( string $value)
protected boolean | setValue ( string $key, string $value, integer $expire) Stores a value identified by a key in cache.
Methods Inherited From TCache
TCache::add(), TCache::delete(), TCache::flush(), TCache::generateUniqueKey(), TCache::get(), TCache::getKeyPrefix(), TCache::getPrimaryCache(), TCache::init(), TCache::offsetExists(), TCache::offsetGet(), TCache::offsetSet(), TCache::offsetUnset(), TCache::set(), TCache::setKeyPrefix(), TCache::setPrimaryCache(),
Methods Inherited From TModule
TModule::getID(), TModule::init(), TModule::setID()
Methods Inherited From TApplicationComponent
TApplicationComponent::getApplication(), TApplicationComponent::getRequest(), TApplicationComponent::getResponse(), TApplicationComponent::getService(), TApplicationComponent::getSession(), TApplicationComponent::getUser(), TApplicationComponent::publishAsset(), TApplicationComponent::publishFilePath()
Methods 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()
Method Details
## addValue
protected boolean addValue | (string $key , string $value , integer $expire )
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.
Input
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.
Output
boolean | true if the value is successfully stored into cache, false otherwise
Exception
## createDbConnection
protected TDbConnection createDbConnection | (string 0 )
Creates the DB connection.
Input
string | 0 | the module ID for TDataSourceConfig
Output
TDbConnection | the created DB connection
Exception
throws | TConfigurationException if module ID is invalid or empty
## deleteValue
protected boolean deleteValue | (string $key )
Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
Input
string | $key | the key of the value to be deleted
Output
boolean | if no error happens during deletion
Exception
## doFlushCacheExpired
public void doFlushCacheExpired | ()
Event listener for TApplication.OnSaveState
Output
Exception
## doInitializeCache
public void doInitializeCache | ()
Event listener for TApplication.OnLoadStateComplete
Output
Exception
## flush
public void flush | ()
Deletes all values from cache. Be careful of performing this operation if the cache is shared by multiple applications.
Output
Exception
## flushCacheExpired
public void flushCacheExpired | (boolean $force )
Flush expired values from cache depending on setFlushInterval
Input
boolean | $force | override FlushInterval and force deletion of expired items
Output
Exception
## getAutoCreateCacheTable
public boolean getAutoCreateCacheTable | ()
Output
boolean | whether the cache DB table should be automatically created if not exists. Defaults to true.
Exception
## getCacheTableName
public string getCacheTableName | ()
Output
string | the name of the DB table to store cache content. Defaults to 'pradocache'.
Exception
## getConnectionID
public string getConnectionID | ()
Output
string | the ID of a TDataSourceConfig module. Defaults to empty string, meaning not set.
Exception
## getConnectionString
public string getConnectionString | ()
Output
string | The Data Source Name, or DSN, contains the information required to connect to the database.
Exception
## getDbConnection
public TDbConnection getDbConnection | ()
Output
TDbConnection | the DB connection instance
Exception
## getFlushInterval
public integer getFlushInterval | ()
Output
integer | Interval in sec expired items will be removed from cache. Default to 60
Exception
## getPassword
public string getPassword | ()
Output
string | the password for establishing DB connection. Defaults to empty string.
Exception
## getUsername
public string getUsername | ()
Output
string | the username for establishing DB connection. Defaults to empty string.
Exception
## getValue
protected string getValue | (string $key )
Retrieves a value from cache with a specified key. This is the implementation of the method declared in the parent class.
Input
string | $key | a unique key identifying the cached value
Output
string | the value stored in cache, false if the value is not in the cache or expired.
Exception
## init
public void init | (TXmlElement $config )
Initializes this module. This method is required by the IModule interface. attach doInitializeCache to TApplication.OnLoadStateComplete event attach doFlushCacheExpired to TApplication.OnSaveState event
Input
TXmlElement | $config | configuration for this module, can be null
Output
Exception
## initializeCache
protected void initializeCache | (boolean $force )
Initialize TDbCache If AutoCreateCacheTableName is 'true' check existence of cache table and create table if does not exist.
Input
boolean | $force | Force override global state check
Output
Exception
throws | TConfigurationException if any error happens during creating database or cache table.
## setAutoCreateCacheTable
public void setAutoCreateCacheTable | (boolean $value )
Input
boolean | $value | whether the cache DB table should be automatically created if not exists.
Output
Exception
## setCacheTableName
public void setCacheTableName | (string $value )
Sets the name of the DB table to store cache content. Note, if AutoCreateCacheTable is false and you want to create the DB table manually by yourself, you need to make sure the DB table is of the following structure:

     CREATE TABLE pradocache (itemkey CHAR(128), value BLOB, expire INT)
     CREATE INDEX IX_itemkey ON pradocache (itemkey)
     CREATE INDEX IX_expire ON pradocache (expire)
Note, some DBMS might not support BLOB type. In this case, replace 'BLOB' with a suitable binary data type (e.g. LONGBLOB in MySQL, BYTEA in PostgreSQL.) Important: Make sure that the indices are non-unique!
Input
string | $value | the name of the DB table to store cache content
Output
Exception
## setConnectionID
public void setConnectionID | (string $value )
Sets the ID of a TDataSourceConfig module. The datasource module will be used to establish the DB connection for this cache module. The database connection can also be specified via ConnectionString. When both ConnectionID and ConnectionString are specified, the former takes precedence.
Input
string | $value | ID of the TDataSourceConfig module
Output
Exception
## setConnectionString
public void setConnectionString | (string $value )
Input
string | $value | The Data Source Name, or DSN, contains the information required to connect to the database.
Output
Exception
## setFlushInterval
public void setFlushInterval | (integer $value )
Sets interval expired items will be removed from cache To disable automatic deletion of expired items, e.g. for external flushing via cron you can set value to '0'
Input
integer | $value | Interval in sec
Output
Exception
## setPassword
public void setPassword | (string $value )
Input
string | $value | the password for establishing DB connection
Output
Exception
## setUsername
public void setUsername | (string $value )
Input
string | $value | the username for establishing DB connection
Output
Exception
## setValue
protected boolean setValue | (string $key , string $value , integer $expire )
Stores a value identified by a key in cache. This is the implementation of the method declared in the parent class.
Input
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.
Output
boolean | true if the value is successfully stored into cache, false otherwise
Exception