This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Incam_SGD/thirdparty/ZendFramework/library/Zend/Cache/EXAMPLES.txt

373 lines
8.7 KiB
Plaintext

// =================================================
// === Classical use of the "Core" of Zend_Cache ===
// =================================================
<?php
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => 7200 // cache lifetime of 2 hours
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
$id = 'foo'; // cache id of "what we want to cache"
if (!($cache->test($id))) {
// cache missed
require_once ... // for perfs reasons, all "require_once" have to be loaded ONLY if the cache is missed
require_once ...
// we build "what we want to cache"
// for example
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . $i;
}
// We save the result into the cache
$cache->save($data);
} else {
// cache hit
$data = $cache->load($id);
}
// do something with $data :)
// [...]
?>
// =================================================
// === "Compact" use of the "Core" of Zend_Cache ===
// =================================================
// This is ok if you store only strings into the cache
// (because with "automaticSerialization" option, it's possible to store
// some booleans into cache)
<?php
// [...] // require and configuration
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
$id = 'foo'; // cache id of "what we want to cache"
if (!($data = $cache->load($id))) {
// cache missed
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . $i;
}
$cache->save($data);
}
echo($data);
?>
// =================================================
// === "Compact" use of the "Core" of Zend_Cache ===
// === (example with two blocks) ===
// =================================================
// This is ok if you store only strings into the cache
// (because with "automaticSerialization" option, it's possible to store
// some booleans into cache)
<?php
// [...] // require and configuration
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
$id1 = 'foo'; // cache id of block1
$id2 = 'bar'; // cache id of block2
// BLOCK1
if (!($data = $cache->load($id1))) {
// cache missed
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . $i;
}
$cache->save($data);
}
echo($data);
// NEVER CACHED BLOCK
echo('NEVER CACHED !');
// BLOCK2
if (!($data = $cache->load($id2))) {
// cache missed
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . '!';
}
$cache->save($data);
}
echo($data);
?>
// =========================================================
// === "Compact" use of the "Core" of Zend_Cache ===
// === (example with two blocks and different lifetimes) ===
// =========================================================
<?php
// [...] // require and configuration
$cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
$id1 = 'foo'; // cache id of block1
$id2 = 'bar'; // cache id of block2
// BLOCK1
if (!($data = $cache->load($id1))) {
// cache missed
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . $i;
}
$cache->save($data);
}
echo($data);
// NEVER CACHED BLOCK
echo('NEVER CACHED !');
// BLOCK2
if (!($data = $cache->load($id2))) {
// cache missed
$data = '';
for ($i=0;$i<10000;$i++) {
$data = $data . '!';
}
$cache->save($data, null, array(), 3600);
// => this cache will have a specific lifetime of 3600 seconds
}
echo($data);
?>
// ============================================================
// === Classical use of the "Output" frontend of Zend_Cache ===
// ============================================================
<?php
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => 7200 // cache lifetime of 2 hours
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('Output', 'File', $frontendOptions, $backendOptions);
$id = 'foo'; // cache id of "what we want to cache"
if (!($cache->start($id))) {
// cache is not hit !
// Output you want to cache
for ($i=0;$i<10000;$i++) {
echo($i);
}
// store "captured" output into cache
$cache->end();
}
?>
// ==============================================================
// === Classical use of the "Function" frontend of Zend_Cache ===
// ==============================================================
<?php
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => 7200 // cache lifetime of 2 hours
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('Function', 'File', $frontendOptions, $backendOptions);
function function_to_cache($arg1, $arg2) {
echo("called function_to_cache($arg1, $arg2)");
return $arg1 + $arg2;
}
// First call, the function will be called
$res1 = $cache->call('function_to_cache', array(1, 3));
echo($res1);
// Second call, output and result will be get from cache
$res2 = $cache->call('function_to_cache', array(1, 3));
echo($res2);
// Third call, the function will be called (because argument values are different)
$res3 = $cache->call('function_to_cache', array(2, 5));
echo($res3);
?>
// ===========================================================
// === Classical use of the "Class" frontend of Zend_Cache ===
// === (mode : class) ===
// ===========================================================
<?php
// Class to cache
class test {
public static function foobar($param1, $param2) {
echo "foobar_output($param1, $param2)";
return "foobar_return($param1, $param2)";
}
}
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => 7200 // cache lifetime of 2 hours,
'cachedEntity' => 'test'
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('Class', 'File', $frontendOptions, $backendOptions);
// First call, the static method will be called
$res1 = $cache->foobar(1, 3);
echo($res1);
// Second call, output and result will be get from cache
$res2 = $cache->foobar(1, 3);
echo($res2);
// Third call, the method will be called (because argument values are different)
$res3 = $cache->foobar(2, 5)
echo($res3);
?>
// ===========================================================
// === Classical use of the "Class" frontend of Zend_Cache ===
// === (mode : object) ===
// ===========================================================
<?php
// Class to cache
class test {
private $_string = 'hello !';
public function foobar2($param1, $param2) {
echo($this->_string);
echo "foobar2_output($param1, $param2)";
return "foobar2_return($param1, $param2)";
}
}
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => 7200 // cache lifetime of 2 hours,
'cachedEntity' => new test()
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('Class', 'File', $frontendOptions, $backendOptions);
// First call, the method will be called
$res1 = $cache->foobar(1, 3);
echo($res1);
// Second call, output and result will be get from cache
$res2 = $cache->foobar(1, 3);
echo($res2);
// Third call, the method will be called (because argument values are different)
$res3 = $cache->foobar(2, 5)
echo($res3);
?>
// ==========================================================
// === Classical use of the "File" frontend of Zend_Cache ===
// ==========================================================
<?php
// The file frontend is used to get a cache driven by a master file
// for example, you have a config file declared as master file
// => all your cache records will be invalidated if the config file is touched
// (very usefull to avoid the parsing of a XML file at each time for example)
require_once 'Zend/Cache.php';
$frontendOptions = array(
'lifetime' => null // no lifetime,
'masterFile' => '/path/to/your/master.file' // your master file here
);
$backendOptions = array(
'cacheDir' => '/tmp/' // Directory where to put the cache files (make sure to add a trailing slash)
);
$cache = Zend_Cache::factory('File', 'File', $frontendOptions, $backendOptions);
// [...] identical to the "Core" use
?>