|
Posted by Rik on 08/10/07 13:33
On Fri, 10 Aug 2007 12:52:59 +0200, philm <gates.w@microsoft.com> wrote:=
> Asking for direction if possible.
>
> What I would like to be able to do is detect when particular functions=
=
> are
> called, so as to be able to set up a results cache, and use that inste=
ad =
> of
> continual db calls and processing.
At runtime? Just using flags I suppose.. Might be worth your while to =
build an (singleton?) object out of several functions.
> Other alternative I suppose, is to look at building in caching in each=
> function...
A variation of:
function foo($param){
static $results =3D array();
if(isset($results[$param])) return $results[$param];
//..
//actual processing, captured in $return;
//..
$results[$param] =3D $return;
return $return;
}
Or possibly, a wrapper function (be very aware of unserializable argumen=
ts =
though):
function cache_results($function, $args =3D array()){
static $cache =3D array();
$checkargs =3D serialize($args);
if(isset($cache[$function][$checkargs])) return =
$cache[$function][$checkargs];
$return =3D call_user_func_array($function,$args);
$cache[$function][$checkargs] =3D $return;
return $return;
}
-- =
Rik Wasmus
[Back to original message]
|