Archive

Articles taggués ‘Cache’

Comment mettre facilement en cache le résultat d’une fonction PHP

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é.

http://www.cybwarrior.com/wp-content/plugins/downloads-manager/img/icons/default.gif download: PHP Cache (1.68KB)
added: 08/10/2009
clicks: 536
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.

Categories: PHP Tags: ,