git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_SGD/tags/3.7.0.2_original@1 eb19766c-00d9-a042-a3a0-45cb8ec72764
373 lines
8.7 KiB
Plaintext
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
|
|
|
|
?> |