15-06-2011, 12:46 AM
(Modification du message : 15-06-2011, 12:48 AM par php_addict.)
Donc voici ma petite fonction qui renvois un objet dans le cache d'apc si il existe,
sinon il le met en cache et le renvois,
et si APC n'est pas installé la fonction renvois l'objet demandé
sinon il le met en cache et le renvois,
et si APC n'est pas installé la fonction renvois l'objet demandé
$cache_object_name = 'objet_a_la_con' ;
$callback_function_name = 'fonction_a_la_con';
$param_array = array ($param1 , $param2);
$duree_cache = 3600;
//
$data = get_object_from_apc_cache($cache_object_name , $callback_function_name , $param_array , $duree_cache);
echo $data;
fonction_a_la_con($param1 , $param2)
{
return($param1 + $param2);
}
//_________________________________________
// function get_object_from_apc_cache |
//_________________________________________|
//
// DESCRIPTION: - retourne un objet stocké dans le cache d'APC , si l'objet n'existe pas dans le cache alors il est sera mis dans le cache
// - si APC n'est pas installé alors l'objet demandé est retourné
//
// PARAMETRES:
//
// $cache_object_name string --> le nom de l'objet dans le cache d'APC
// $callback_function_name string --> le nom de la function de calback qui va créer l'objet si il n'existe pas dans le cache ou si APC n'est pas installé
// $param_array array --> les paramètres de la function callback
// $duree_cache int --> durrée de vie du cache
//
// SORTIE: l'objet du cache demandé
//
// AUTEUR: php_addict on jeuweb.org
//
function get_object_from_apc_cache($cache_object_name , $callback_function_name , $param_array , $duree_cache)
{
//_____________________
// si APC est détecté |
//_____________________|
if(function_exists('apc_exists'))
{
//______________________________________________________________________________________________
// si le l'objet $cache_object_name en cache n'existe pas on le créé avec la function callback |
//______________________________________________________________________________________________|
if (!apc_exists($cache_object_name))
{
$data = call_user_func_array($callback_function_name,$param_array); // on créé l'objet avec la function de callback
apc_add($cache_object_name , $data , $duree_cache ); // on stocke l'objet dans le cache pendant $duree_cache secondes
}
//_________________________________________________________________________
// si le l'objet $cache_object_name en cache existe on le recupere |
//_________________________________________________________________________|
else
{
$data =apc_fetch($cache_object_name);
}
}
//___________________________________________________________________________
// si APC n'est pas détecté on renvois les donnée avec la function callback |
//___________________________________________________________________________|
else
{
$data = call_user_func_array($callback_function_name,$param_array);
}
return($data);
}