分类:
2008-05-27 21:50:02
◆ 函数缓存输出 PEAR cache
PEAR除了可以对输出的内容进行缓存处理外,还可以将对某个函数的调用结果缓存起来。这是个很有趣的功能,如果你的程序要频繁使用到某个函数,而且调用的结果相同的话,我建议你不妨试试,特别是当这个函数运行起来比较慢的时候。
下面我们实现对一个执行起来很慢的函数slowFunction()的缓冲调用。
require_once
'Cache/Function.php'
;
$cacheDir
=
'./pear_cache/'
;
$cache
= new
Cache_Function
(
'file'
,array(
'cache_dir'
=>
$cacheDir
));
$arr
= array(
'
苹果
'
,
'
梨
'
,
'
西瓜
'
);
$cache
->
call
(
'slowFunction'
,
$arr
);
echo
'
';
$arr
= array(
'
苹果
'
,
'
梨
'
,
'
西瓜
'
);
slowFunction
(
$arr
);
function
slowFunction
(
$arr
=
null
)
{
echo
"
一个执行起来很慢的函数
:(
";
echo
"
当前时间是
"
.
date
(
'M-d-Y H:i:s A'
,
time
()) .
'
';
foreach (
$arr
as
$fruit
)
{
echo
"
我吃了一个
$fruit
";
}
)
?>
以下是示例的脚本执行结果:
一个执行起来很慢的函数 :(
当前时间是 Jul-28-2004 17:15:57 PM
我吃了一个 苹果
我吃了一个 梨
我吃了一个 西瓜
一个执行起来很慢的函数 :(
当前时间是 Jul-28-2004 17:17:55 PM
我吃了一个 苹果
我吃了一个 梨
我吃了一个 西瓜
代码中,Cache/Function.php类用来执行函数缓冲功能。$cache变量是一个Cache_Function对象,使用基于文件的函数缓存,存入$cacheDir目录。要缓存一个函数调,Cache_Function对象$cache的call()方法要像这样使用:$cache->call(‘slowFunction’, $arr);
这里,slowFunction()函数被调用,参数为一个数组$arr,这个函数被缓存在$cacheDir目录下的一个文件里。任何在此之后的对这个函数的调用,将会由$cache->call()返回该函数执行的结果。
函数缓存和使用方法和内容缓存很相似,不再多说,具体请查看PEAR手册。