PHP 클래스 Prado\Caching\TDbCache

TDbCache implements a cache application module by storing cached data in a database. TDbCache relies on {@link http://www.php.net/manual/en/ref.pdo.php 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: - {@link setConnectionID ConnectionID} or - {@link setConnectionString ConnectionString}, {@link setUsername Username} and {@link setPassword 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 {@link setCacheTableName CacheTableName} and {@link setAutoCreateCacheTable AutoCreateCacheTableName} properties. {@link setFlushInterval 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: - {@link get} : retrieve the value with a key (if any) from cache - {@link set} : store the value with a key into cache - {@link add} : store the value only if cache does not have this key - {@link delete} : delete the value with the specified key from cache - {@link flush} : delete all values from cache Each value is associated with an expiration time. The {@link 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 {@link TApplication} as the cache module. It can be accessed via {@link TApplication::getCache()}. TDbCache may be configured in application configuration file as follows
부터: 3.1.0
저자: Qiang Xue ([email protected])
상속: extends TCache
파일 보기 프로젝트 열기: pradosoft/prado

공개 메소드들

메소드 설명
__destruct ( ) Destructor.
doFlushCacheExpired ( ) : void Event listener for TApplication.OnSaveState
doInitializeCache ( ) : void Event listener for TApplication.OnLoadStateComplete
flush ( ) Deletes all values from cache.
flushCacheExpired ( $force = false ) : void Flush expired values from cache depending on {@link setFlushInterval FlushInterval}
getAutoCreateCacheTable ( ) : boolean
getCacheTableName ( ) : string
getConnectionID ( ) : string
getConnectionString ( ) : string
getDbConnection ( ) : TDbConnection
getFlushInterval ( ) : integer
getPassword ( ) : string
getUsername ( ) : string
init ( $config ) Initializes this module.
setAutoCreateCacheTable ( $value )
setCacheTableName ( $value ) Sets the name of the DB table to store cache content.
setConnectionID ( $value ) Sets the ID of a TDataSourceConfig module.
setConnectionString ( $value )
setFlushInterval ( $value ) Sets interval expired items will be removed from cache
setPassword ( $value )
setUsername ( $value )

보호된 메소드들

메소드 설명
addValue ( $key, $value, $expire ) : boolean Stores a value identified by a key into cache if the cache does not contain this key.
createDbConnection ( ) : TDbConnection Creates the DB connection.
deleteValue ( $key ) : boolean Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
getValue ( $key ) : string Retrieves a value from cache with a specified key.
initializeCache ( $force = false ) : void Initialize TDbCache
setValue ( $key, $value, $expire ) : boolean Stores a value identified by a key in cache.

메소드 상세

__destruct() 공개 메소드

Disconnect the db connection.
public __destruct ( )

addValue() 보호된 메소드

This is the implementation of the method declared in the parent class.
protected addValue ( $key, $value, $expire ) : boolean
리턴 boolean true if the value is successfully stored into cache, false otherwise

createDbConnection() 보호된 메소드

Creates the DB connection.
protected createDbConnection ( ) : TDbConnection
리턴 Prado\Data\TDbConnection the created DB connection

deleteValue() 보호된 메소드

Deletes a value with the specified key from cache This is the implementation of the method declared in the parent class.
protected deleteValue ( $key ) : boolean
리턴 boolean if no error happens during deletion

doFlushCacheExpired() 공개 메소드

Event listener for TApplication.OnSaveState
또한 보기: flushCacheExpired
부터: 3.1.5
public doFlushCacheExpired ( ) : void
리턴 void

doInitializeCache() 공개 메소드

Event listener for TApplication.OnLoadStateComplete
또한 보기: initializeCache
부터: 3.1.5
public doInitializeCache ( ) : void
리턴 void

flush() 공개 메소드

Be careful of performing this operation if the cache is shared by multiple applications.
public flush ( )

flushCacheExpired() 공개 메소드

Flush expired values from cache depending on {@link setFlushInterval FlushInterval}
부터: 3.1.5
public flushCacheExpired ( $force = false ) : void
리턴 void

getAutoCreateCacheTable() 공개 메소드

또한 보기: setAutoCreateCacheTable
public getAutoCreateCacheTable ( ) : boolean
리턴 boolean whether the cache DB table should be automatically created if not exists. Defaults to true.

getCacheTableName() 공개 메소드

또한 보기: setAutoCreateCacheTable
public getCacheTableName ( ) : string
리턴 string the name of the DB table to store cache content. Defaults to 'pradocache'.

getConnectionID() 공개 메소드

부터: 3.1.1
public getConnectionID ( ) : string
리턴 string the ID of a {@link TDataSourceConfig} module. Defaults to empty string, meaning not set.

getConnectionString() 공개 메소드

public getConnectionString ( ) : string
리턴 string The Data Source Name, or DSN, contains the information required to connect to the database.

getDbConnection() 공개 메소드

public getDbConnection ( ) : TDbConnection
리턴 Prado\Data\TDbConnection the DB connection instance

getFlushInterval() 공개 메소드

부터: 3.1.5
public getFlushInterval ( ) : integer
리턴 integer Interval in sec expired items will be removed from cache. Default to 60

getPassword() 공개 메소드

public getPassword ( ) : string
리턴 string the password for establishing DB connection. Defaults to empty string.

getUsername() 공개 메소드

public getUsername ( ) : string
리턴 string the username for establishing DB connection. Defaults to empty string.

getValue() 보호된 메소드

This is the implementation of the method declared in the parent class.
protected getValue ( $key ) : string
리턴 string the value stored in cache, false if the value is not in the cache or expired.

init() 공개 메소드

This method is required by the IModule interface. attach {@link doInitializeCache} to TApplication.OnLoadStateComplete event attach {@link doFlushCacheExpired} to TApplication.OnSaveState event
public init ( $config )

initializeCache() 보호된 메소드

If {@link setAutoCreateCacheTable AutoCreateCacheTableName} is 'true' check existence of cache table and create table if does not exist.
부터: 3.1.5
protected initializeCache ( $force = false ) : void
리턴 void

setAutoCreateCacheTable() 공개 메소드

또한 보기: setCacheTableName
public setAutoCreateCacheTable ( $value )

setCacheTableName() 공개 메소드

Note, if {@link setAutoCreateCacheTable 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!
또한 보기: setAutoCreateCacheTable
public setCacheTableName ( $value )

setConnectionID() 공개 메소드

The datasource module will be used to establish the DB connection for this cache module. The database connection can also be specified via {@link setConnectionString ConnectionString}. When both ConnectionID and ConnectionString are specified, the former takes precedence.
부터: 3.1.1
public setConnectionID ( $value )

setConnectionString() 공개 메소드

또한 보기: http://www.php.net/manual/en/function.pdo-construct.php
public setConnectionString ( $value )

setFlushInterval() 공개 메소드

To disable automatic deletion of expired items, e.g. for external flushing via cron you can set value to '0'
부터: 3.1.5
public setFlushInterval ( $value )

setPassword() 공개 메소드

public setPassword ( $value )

setUsername() 공개 메소드

public setUsername ( $value )

setValue() 보호된 메소드

This is the implementation of the method declared in the parent class.
protected setValue ( $key, $value, $expire ) : boolean
리턴 boolean true if the value is successfully stored into cache, false otherwise