Voici une petite fonction PHP permettant de mettre facilement en cache ce que renvoie une autre fonction afin de ne pas avoir à l’appeler à chaque fois. Cela permet d’optimiser grandement la vitesse d’exécution des scripts lorsque ceux-ci reposent sur des traitements longs.
Pour l’utiliser, il suffit d’inclure le code du fichier lib_cache (http://www.cybwarrior.com/?file_id=73) et d’appeler la fonction cache de la façon suivante :
function pause($a)
{
sleep($a);
return ’stop’;
}
print cache(3600 * 24, ‘pause’, array(10));
Le premier argument désigne en secondes la fréquence (ou plutôt la période
) à laquelle exécuter la fonction – dans notre cas, tous les jours.
Le deuxième argument est le nom de la fonction. Mais il est aussi possible de passer la méthode d’un objet : c’est très souple. Le fonctionnement repose sur la fonction call_user_func_array. Reportez-vous à la documentation pour plus d’informations.
Le troisième argument est le tableau des arguments à passer à la fonction, le premier élément contenant le premier argument, et ainsi de suite.
Un quatrième argument facultatif peut être ajouté, qui doit être une conjonction des constantes CACHE_REFRESH et CACHE_NO_REFRESH, qui respectivement force le rafraîchissement du cache ou au contraire renvoie le contenu même s’il est expiré.
Résultat : dans notre cas, la fonction prend 10 secondes à s’exécuter. Mais appelée avec la fonction cache, celle-ci n’est en fait exécutée complétement qu’une seule fois par jour, et le reste du temps, le résultat de la fonction contenu en cache est renvoyé.
|
download: PHP Cache (1.68KB)
added: 08/10/2009
clicks: 1065
description: Une fonction très utile pour mettre en cache le résultat d'une fonction PHP, afin d'optimiser son code et le rendre plus rapide en ne l'appelant à chaque fois. A very useful function which store in a cache file what an other function returns, in order to optimize the code and make it quicker.
|