Utilisation d’un système de cache

Pourquoi mettre des données en cache

Le système de cache permet de stocker des données de façon à les rendre accessibles très rapidement. En général, ces données sont souvent utilisées en lecture et rarement en écriture.

Dans cet article nous allons mettre en place un système de cache pour une liste d’utilisateurs. Ce système chargera cette liste depuis la base de données toutes les heures afin de s’assurer que le cache est bien à jour et lira le fichier de cache le reste du temps.
Cette fonctionnalité nous permet limiter les accès à la base de données, et surtout accélérer la vitesse de chargement de la liste.


Exemple d’une mise en cache

Pour tester cette application, vous pouvez utiliser le script SQL et l’archive de test et modifier les premières lignes pour configurer l’accès à la base de données.

Vous pouvez aussi le tester directement sur mon laboratoire en ligne.


Utilisation de OPCache

Vider le cache

<?php
OPCache::Delete('liste-utilisateurs');
?>

Vérifier si le cache est prêt. C’est à dire si nous avons déjà stocké les données en cache.

<?php
if( OPCache::IsCached('liste-utilisateurs') ){
// Votre code ici
}
?>

Modifier les données du cache. Il faut utiliser cette action à chaque fois que la liste des utilisateurs est mis à jour dans la base de données.

<?php
OPCache::Save('liste-utilisateurs', $ma_liste);
?>

Puis enfin lire le cache

<?php
$ma_liste = OPCache::Load('liste-utilisateurs');
?>


Conclusion

Cette classe OPCache est très rapide à installer (1 fichiers) et facile à prendre en main. Vous pouvez maintenant mettre en cache des variables primaires (int, string, float, …), des tableaux (comme dans l’exemple) ou des objets à condition qu’il soit « serializable » (pas de connexion de base de données par exemple).

Tagués avec : , , , , ,
Publié dans PHP
7 commentaires pour “Utilisation d’un système de cache
  1. gab dit :

    Bon je viens de tester rapidement et j’ai une erreur sur mon serveur OVH…
    Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in /homez.***/be**/www/cache/opcache.class.php on line 11

    Je comprends pas trop d’où ça peut venir…
    J’ai aussi une autre question pourrais-tu me ré-expliquer la différence entre:
    include_once ‘monphp.php’ et include_once(« monphp.php ») ?

    Merci d’avance gab

    ps: quand j’essaye de chargé uniquement le timer.php sa me fait une erreur de même type…

  2. gab dit :

    Bon je viens de trouver pourquoi ça ne marchait pas chez ovh …

    Il faut rajouter SetEnv PHP_VER 5 dans le .htaccess

    Fallait juste le savoir xD

  3. admin dit :

    La différence entre include_once ‘tonphp.php’ et include_once(« tonphp.php ») c’est juste que le deuxième est plus lent à exécuter à cause des guillemets.

    En effet, à chaque fois que tu utilises les guillemets PHP parcourt la chaîne à la recherche de variables à interpréter alors que lorsque tu utilises les apostrophes PHP comprends directement qu’il n’y a rien à interpréter.

    Je vais rédiger le premier conseil du jour directement ^^ merci d’avoir donné l’idée

  4. gab dit :

    Modifier les données du cache. Il faut utiliser cette action à cache fois que la liste des utilisateurs est mis à jour dans la base de données.

    Jeu de mots ?

  5. admin dit :

    Je viens de voir, excusez-moi pour le lapsus du clavier… J’ai corrigé la faute.
    Merci gab

  6. Arta dit :

    Genial, c’est parfait : simple et rapide =)

  7. Jalik dit :

    Salut, l’idée de départ est bonne, mais attention à ne pas utiliser cette classe pour stocker des données sensibles genre liste des utilisateurs (justement) avec id, mot de passe, adresse mail.. bref uniquement pour des données publiques !

    Concernant le coup des guillemets doubles, c’est vrai que PHP met « plus » de temps qu’avec des guillemets simples, mais c’est vraiment infime !

    En définitive ta classe est plus une démonstration théorique sur « comment ça marche », mais pas du tout adaptée à une appli en production, tu devrais le dire.

    Bonne continuation

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*