Class: Cache_Lite
Source Location: /lodel/scripts/Cache/Lite.php
Class Cache_Lite
Property Summary
| string |
$_cacheDir |
Directory where to put the cache files (make sure to add a trailing slash) |
| string |
$_file |
File name (with path) |
| string |
$_id |
Current cache id |
| boolean |
$_onlyMemoryCaching |
Enable / Disable "Only Memory Caching" (be carefull, memory caching is "beta quality") |
| boolean |
$_writeControl |
Enable / disable write control (the cache is read just after writing to detect corrupt entries) |
Method Summary
| boolean |
clean() |
Clean the cache |
| void |
extendLife() |
Extend the life of a valid cache file |
| string |
get() |
Test if a cache is available and (if yes) return it |
| boolean |
remove() |
Remove a cache file |
| boolean |
save() |
Save some data in a cache file |
| void |
setOption() |
Generic way to set a Cache_Lite option |
| boolean |
_cleanDir() |
Recursive function for cleaning cache file in the given directory |
| string |
_hash() |
Make a control key with the string containing datas |
| string |
_read() |
Read the cache file and return the content |
| boolean |
_write() |
Write the given data in the cache file |
| boolean |
_writeAndControl() |
Write the given data in the cache file and control it just after to avoir corrupted cache entries |
Properties
Disable / Tune the automatic cleaning process
The automatic cleaning process destroy too old (for the given life time) cache files when a new cache file is written. - => no automatic cache cleaning
- => systematic cache cleaning
x (integer) > 1 => automatic cleaning randomly 1 times on x cache write
Enable / disable automatic serialization
it can be used to save directly datas which aren't strings (but it's slower)
Directory where to put the cache files (make sure to add a trailing slash)
Enable / disable caching
(can be very usefull for the debug of cached scripts)
API break for error handling in CACHE_LITE_ERROR_RETURN mode
In CACHE_LITE_ERROR_RETURN mode, error handling was not good because for example save() method always returned a boolean (a PEAR_Error object would be better in CACHE_LITE_ERROR_RETURN mode). To correct this without breaking the API, this option (false by default) can change this handling.
Enable / disable fileLocking
(can avoid cache corruption under bad circumstances)
File Name protection
if set to true, you can use any cache id or group name if set to false, it can be faster but cache ids and group names will be used directly in cache file names so be carefull with special characters...
Nested directory level
Set the hashed directory structure level. 0 means "no hashed directory structure", 1 means "one level of directory", 2 means "two levels"... This option can speed up Cache_Lite only when you have many thousands of cache file. Only specific benchs can help you to choose the perfect value for you. Maybe, 1 or 2 is a good start.
Umask for hashed directory structure
Cache lifetime (in seconds)
If null, the cache is valid forever.
Enable / Disable "Memory Caching"
NB : There is no lifetime for memory caching !
Enable / Disable "Only Memory Caching" (be carefull, memory caching is "beta quality")
Pear error mode (when raiseError is called)
(see PEAR doc) API Tags:
Enable / disable read control
If enabled, a control key is embeded in cache file and this key is compared with the one calculated after the reading.
Type of read control (only if read control is enabled)
Available values are : 'md5' for a md5 hash control (best but slowest) 'crc32' for a crc32 hash control (lightly less safe but faster, better choice) 'strlen' for a length only test (fastest)
Timestamp of the last valid cache
Enable / disable write control (the cache is read just after writing to detect corrupt entries)
Enable write control will lightly slow the cache writing but not the cache reading Write control can detect some corrupt cache files but maybe it's not a perfect control
Methods
Cache_Lite Cache_Lite(
[array
$options = array(NULL)]
)
|
|
Constructor
$options is an assoc. Available options are : $options = array( 'cacheDir' => directory where to put the cache files (string), 'caching' => enable / disable caching (boolean), 'lifeTime' => cache lifetime in seconds (int), 'fileLocking' => enable / disable fileLocking (boolean), 'writeControl' => enable / disable write control (boolean), 'readControl' => enable / disable read control (boolean), 'readControlType' => type of read control 'crc32', 'md5', 'strlen' (string), 'pearErrorMode' => pear error mode (when raiseError is called) (cf PEAR doc) (int), 'memoryCaching' => enable / disable memory caching (boolean), 'onlyMemoryCaching' => enable / disable only memory caching (boolean), 'memoryCachingLimit' => max nbr of records to store into memory caching (int), 'fileNameProtection' => enable / disable automatic file name protection (boolean), 'automaticSerialization' => enable / disable automatic serialization (boolean), 'automaticCleaningFactor' => distable / tune automatic cleaning process (int), 'hashedDirectoryLevel' => level of the hashed directory system (int), 'hashedDirectoryUmask' => umask for hashed directory structure (int), 'errorHandlingAPIBreak' => API break for better error handling ? (boolean) );
Parameters:
API Tags:
boolean clean(
[string
$group = false], [string
$mode = 'ingroup']
)
|
|
Clean the cache
if no group is specified all cache files will be destroyed else only cache files of the specified group will be destroyed
Parameters:
|
string |
$group: |
name of the cache group |
|
string |
$mode: |
flush cache mode : 'old', 'ingroup', 'notingroup', 'callback_myFunction' |
API Tags:
| Return: | true if no problem |
| Access: | public |
Extend the life of a valid cache file
see http://pear.php.net/bugs/bug.php?id=6681
API Tags:
string get(
string
$id, [string
$group = 'default'], [boolean
$doNotTestCacheValidity = false]
)
|
|
Test if a cache is available and (if yes) return it
Parameters:
|
string |
$id: |
cache id |
|
string |
$group: |
name of the cache group |
|
boolean |
$doNotTestCacheValidity: |
if set to true, the cache validity won't be tested |
API Tags:
| Return: | data of the cache (else : false) |
| Access: | public |
Redefined in descendants as:
void getMemoryCachingState(
string
$id, [string
$group = 'default'], [boolean
$doNotTestCacheValidity = false]
)
|
|
Load the state of the caching memory array from a given cache file cache
Parameters:
|
string |
$id: |
cache id |
|
string |
$group: |
name of the cache group |
|
boolean |
$doNotTestCacheValidity: |
if set to true, the cache validity won't be tested |
API Tags:
Return the cache last modification time
BE CAREFUL : THIS METHOD IS FOR HACKING ONLY !
API Tags:
| Return: | last modification time |
void raiseError(
string
$msg, int
$code
)
|
|
Trigger a PEAR error
To improve performances, the PEAR.php file is included dynamically. The file is so included only when an error is triggered. So, in most cases, the file isn't included and perfs are much better.
Parameters:
|
string |
$msg: |
error message |
|
int |
$code: |
error code |
API Tags:
boolean remove(
string
$id, [string
$group = 'default'], [boolean
$checkbeforeunlink = false]
)
|
|
Remove a cache file
Parameters:
|
string |
$id: |
cache id |
|
string |
$group: |
name of the cache group |
|
boolean |
$checkbeforeunlink: |
check if file exists before removing it |
API Tags:
| Return: | true if no problem |
| Access: | public |
boolean save(
string
$data, [string
$id = NULL], [string
$group = 'default']
)
|
|
Save some data in a cache file
Parameters:
|
string |
$data: |
data to put in cache (can be another type than strings if automaticSerialization is on) |
|
string |
$id: |
cache id |
|
string |
$group: |
name of the cache group |
API Tags:
| Return: | true if no problem (else : false or a PEAR_Error object) |
| Access: | public |
void saveMemoryCachingState(
string
$id, [string
$group = 'default']
)
|
|
Save the state of the caching memory array into a cache file cache
Parameters:
|
string |
$id: |
cache id |
|
string |
$group: |
name of the cache group |
API Tags:
void setLifeTime(
int
$newLifeTime
)
|
|
Set a new life time
Parameters:
|
int |
$newLifeTime: |
new life time (in seconds) |
API Tags:
void setOption(
$name,
$value
)
|
|
Generic way to set a Cache_Lite option
see Cache_Lite constructor for available options
Parameters:
API Tags:
Set to debug mode
When an error is found, the script will stop and the message will be displayed (in debug mode only).
API Tags:
boolean _cleanDir(
string
$dir, [string
$group = false], [string
$mode = 'ingroup']
)
|
|
Recursive function for cleaning cache file in the given directory
Parameters:
|
string |
$dir: |
directory complete path (with a trailing slash) |
|
string |
$group: |
name of the cache group |
|
string |
$mode: |
flush cache mode : 'old', 'ingroup', 'notingroup', |
API Tags:
| Return: | true if no problem |
| Access: | private |
string _hash(
string
$data, string
$controlType
)
|
|
Make a control key with the string containing datas
Parameters:
|
string |
$data: |
data |
|
string |
$controlType: |
type of control 'md5', 'crc32' or 'strlen' |
API Tags:
| Return: | control key |
| Access: | private |
void _memoryCacheAdd(
string
$data
)
|
|
Add some date in the memory caching array
Parameters:
|
string |
$data: |
data to cache |
API Tags:
Read the cache file and return the content
API Tags:
| Return: | content of the cache file (else : false or a PEAR_Error object) |
| Access: | private |
void _setFileName(
string
$id, string
$group
)
|
|
Make a file name (with path)
Parameters:
|
string |
$id: |
cache id |
|
string |
$group: |
name of the group |
API Tags:
Compute & set the refresh time
API Tags:
boolean _unlink(
string
$file
)
|
|
Remove a file
Parameters:
|
string |
$file: |
complete file path and name |
API Tags:
| Return: | true if no problem |
| Access: | private |
boolean _write(
string
$data
)
|
|
Write the given data in the cache file
Parameters:
|
string |
$data: |
data to put in cache |
API Tags:
| Return: | true if ok (a PEAR_Error object else) |
| Access: | private |
boolean _writeAndControl(
string
$data
)
|
|
Write the given data in the cache file and control it just after to avoir corrupted cache entries
Parameters:
|
string |
$data: |
data to put in cache |
API Tags:
| Return: | true if the test is ok (else : false or a PEAR_Error object) |
| Access: | private |
|
|