Rôle

CopixCache est la classe de base de Copix qui vous permet de sauvegarder des informations afin de les ressortir en un temps éclair lorsque vous en aurez de nouveau besoin.

Il est possible de paramétrer plusieurs caches avec plusieurs stratégies de sauvegardes.

CopixCache peut en standard fonctionner avec APC, le système de fichier, ou simplement se comporter comme une variable globale à la page.

Pour chaque cache, il est possible de déterminer des durées de vie ainsi que des sous type.

Utilisation

Ecrire dans le cache

CopixCache::write ($id, $content, $type);
  • $id correspond à l'identifiant de l'élément à stocker dans le cache. L'identifiant peut être un tableau, un objet, une chaine, ...
  • $content est le contenu de l'élément à mettre en cache. Le contenu peut être d'un type quelconque.
  • $type est le type de cache ou l'on veut stocker notre élément. Le type est facultatif, si vous ne le précisez pas, le type 'default' sera utilisé.

Exemples

//Sauvegarde du résultat d'une requête
CopixCache::write ($filtre, _dao ('ma_table')->findBy ($filtre));

//Sauvegarde du contenu d'une page web distante
CopixCache::write ('http://www.copix.org', file_get_contents ('http://www.copix.org'));

//Sauvegarde d'une donnée dans le cache de type "data" (qui devra être configuré)
CopixCache::write ('data_1', $monObjet->get ('data_1'), 'data');

Tester l'existence d'un élément dans le cache

CopixCache::exists ($id, $type);
  • $id correspond à l'identifiant de l'élément dont on vérifie la présence. L'identifiant peut être un tableau, un objet, une chaine, ...
  • $type est le type de cache dans lequel on vérifie la présence de l'élément. Le type est facultatif, si vous ne le précisez pas, le type 'default' sera utilisé.

La méthode retourne true ou false.

Exemple

if (!CopixCache::exists ($filtre)){
   //traitement
}

Lire depuis le cache

$my_content = CopixCache::read ($id, $type);
  • $id correspond à l'identifiant de l'élément à récupérer depuis le cache. L'identifiant peut être un tableau, un objet, une chaine, ...
  • $type est le type de cache depuis lequel on veut récupérer l'élément. Le type est facultatif, si vous ne le précisez pas, le type 'default' sera utilisé.

Effacer les éléments d'un cache

CopixCache::clear ($id, $type)
  • $id correspond à l'identifiant de l'élément à supprimer du cache. L'identifiant peut être un tableau, un objet, une chaine, ... Si vous souhaitez supprimer l'ensemble des éléments du cache, mettez "null".
  • $type est le type de cache duquel on souhaite supprimer l'élément. Le type est facultatif, si vous ne le précisez pas, le type 'default' sera utilisé.

Configuration

Pour configurer les types de cache, il suffit d'utiliser l'interface de configuration du module admin nommée "administration des types de cache".

Les stratégies de Cache

CopixCache peut utiliser plusieurs types de stratégies pour écrire/lire dans le cache. En général, une stratégie est un moyen / lieu ou sauvegarder les éléments.

Les stratégies standard

APC

La stratégie APC utilise l'extension PHP (PECL) APC.

Concrètement, elle utilise les méthodes apc_store et apc_fetch pour écrire / lire depuis le cache. C'est une méthode particulièrement efficace si vous utilisez cette extension sur votre serveur.

Nous recommandons l'utilisation de cette stratégie pour des données volatiles et peu volumineuses.

File

La stratégie File utilise le système de fichier pour sauvegarder les données dans le cache.

Les fichiers seront sauvegardés dans le répertoire désigné par COPIX_CACHE_PATH soit en standard temp/cache/*.

Il existera un répertoire par type de cache.

Nous recommandons l'utilisation de cette stratégie pour des données à longue persistance ou volumineuses.

System

La stratégie System utilise la mémoire du script pour sauvegarder ses données. Ainsi, toute information mise dans le cache avec la stratégie System est perdue à la fin du script.

Nous recommandons l'utilisation de cette stratégie pour des pré-calculs de données qui peuvent être utilisées au travers de plusieurs objets de façon asynchrones.

Creation d'une stratégie

Vous pouvez egalement créer des strategies de cache.

Pour cela, créez un module contenant une classe utilisant l'interface CopixCacheApi?

Vous devrez ensuite des déclarer les 6 méthodes obligaroires (write, read, clear, exists, isEnabled et le constructeur construct)

Votre strategie pourra être configurée dans un de vos cache en mettant la strategie sous la forme 'module|classeAdaptator'

Voir aussi