Utiliser memcached pour le stockage de session
Memcached est un système de mise en cache de mémoire distribuée à usage général. Elle est souvent utilisée pour accélérer les sites web dynamiques pilotés par une base de données en mettant en cache des données et des objets dans la RAM afin de réduire le nombre de fois qu’une source de données externe (telle qu’une base de données ou une API) doit être lue.
Memcached fournit une table de hachage volumineuse qui peut être distribuée sur plusieurs ordinateurs. Lorsque le tableau est plein, les insertions suivantes entraînent la purge des données plus anciennes dans l'ordre d'utilisation le moins récent (LRU). La taille de cette table de hachage est souvent très grande. (Source : memcached.org)
Commerce utilise la mise en cache de mémoire pour le stockage de session, mais pas pour la mise en cache de page. Pour la mise en cache de page, nous vous recommandons d’utiliser Redis ou Varnish.
Pour configurer Commerce afin d’utiliser memcached :
-
Ouvrez
<your install dir>/app/etc/env.php
dans un éditeur de texte. -
Recherchez les éléments suivants :
code language-php 'session' => array ( 'save' => 'files', ),
-
Modifiez-le comme suit :
code language-php 'session' => array ( 'save' => 'memcached', 'save_path' => '<memcache ip or host>:<memcache port>' ),
memcached comporte des paramètres de démarrage facultatifs qui ne font pas partie de ce guide. Vous trouverez plus d’informations à leur sujet dans la documentation memcached, le code source et les journaux de modifications.
-
Passez à la section suivante.
Pour vérifier que memcached fonctionne avec Commerce :
-
Supprimez le contenu des répertoires ci-dessous de votre répertoire d’installation Commerce :
code language-bash rm -rf var/cache/* var/page_cache/* var/session/*
-
Accédez à n’importe quelle page du storefront.
-
Connectez-vous à l’Administration et accédez à plusieurs pages.
Si aucune erreur ne s’affiche, félicitations ! memcached fonctionne ! Vous pouvez éventuellement examiner le stockage mis en cache, comme indiqué à l’étape suivante.
Si des erreurs s’affichent (par exemple, une erreur HTTP 500 (Internal Server Error)), activez le mode Développeur et diagnostiquez le problème. Assurez-vous que memcached est en cours d'exécution, correctement configuré et qu'
env.php
n'a aucune erreur de syntaxe. -
(Facultatif.) Utilisez Telnet pour examiner le stockage en mémoire cache.
code language-bash telnet <memcached host or ip> <memcached port>
code language-bash stats items
Les résultats s’affichent de la manière suivante :
code language-none STAT items:3:number 1 STAT items:3:age 7714 STAT items:3:evicted 0 STAT items:3:evicted_nonzero 0 STAT items:3:evicted_time 0 STAT items:3:outofmemory 0 STAT items:3:tailrepairs 0 [Look at the keys in more detail](https://darkcoding.net/software/memcached-list-all-keys/)