Configurer le cache d'objets avec Redis ou Memcached
D'abord : de quoi votre PHP est-il capable ?
Le cache d'objets s'adresse à Redis ou à Memcached, et pour cela PHP a besoin de l'extension correspondante. Kakapo le vérifie à l'exécution, en regardant si la classe Redis ou Memcached est réellement chargée. Un service Redis en fonctionnement ne suffit pas à lui seul : sans extension, PHP ne peut pas lui parler. Si elle manque, l'entrée est désactivée dans la liste de sélection, et à côté figure le paquet qui manque (par exemple « pecl install redis » ou le paquet de distribution php<version>-redis, puis redémarrer PHP). Si Kakapo ne trouve que l'ancienne extension « memcache » sans d, il le dit explicitement — elle n'est pas utilisée, car il lui manque la requête groupée getMulti et la transmission binaire. Si aucune des deux extensions n'est présente, vous ne pouvez pas aller plus loin ici ; c'est l'affaire de votre hébergeur, pas du plugin.
Renseigner la connexion
L'hôte est habituellement 127.0.0.1. Un schéma comme « http:// » est refusé, car il ne doit y avoir ici qu'un nom d'hôte ou une IP. Pour une socket Unix, vous saisissez son chemin (p. ex. /var/run/redis/redis.sock) et mettez le port à 0. Le port est habituellement 6379 pour Redis et 11211 pour Memcached ; les valeurs autorisées vont de 0 à 65535. Si vous changez de raccordement, Kakapo reprend automatiquement le port par défaut, tant que l'ancien était encore celui par défaut. Le numéro de base de données (0 à 255) n'existe que chez Redis et sépare ce site des autres applications sur le même serveur. Vous n'avez besoin d'un utilisateur et d'un mot de passe que si votre Redis fonctionne avec des ACL (à partir de Redis 6) ou si Memcached exige SASL. Le préfixe de clé sépare l'une de l'autre deux installations WordPress sur le même serveur de stockage — si le champ reste vide, un préfixe est dérivé de l'adresse de votre site (kwpp plus huit caractères). Sont autorisés les lettres, les chiffres et _ . : -, au maximum 40 caractères. La validité par entrée est préréglée sur 86400 secondes ; les valeurs autorisées vont de 0 à 2592000. 0 signifie « n'expire jamais » — cela a des conséquences pour le vidage, voir plus bas.
Tester la connexion avant d'écrire quoi que ce soit
Le bouton « Tester la connexion » établit réellement une connexion, écrit une clé de test (validité 30 secondes), la relit, la compare caractère par caractère avec la valeur écrite et la supprime ensuite. Le test n'est réussi que si la valeur revient inchangée — un simple « connect() n'a pas renvoyé false » serait trop mince : Redis peut être connecté et malgré tout protégé en écriture (réplica), et Memcached accepte des connexions avant même d'avoir de la mémoire. Une limite de temps d'une seconde s'applique à l'ensemble du cycle. La durée mesurée et quelques indications sur le serveur (version, mémoire occupée, nombre d'entrées, durée) figurent ensuite dans la carte. Si le test échoue, la raison concrète y est indiquée : injoignable, authentification refusée, base de données non sélectionnable. Le test s'exécute exclusivement dans l'administration ou via Cron — jamais une connexion de test n'est établie pendant la construction de la page pour un visiteur.
Écrire le drop-in — et ce qui se passe alors
Le cache d'objets vit dans le fichier wp-content/object-cache.php. WordPress le charge très tôt, avant tout plugin. Avant l'écriture, Kakapo affiche un aperçu : quel fichier est créé, quelles données d'accès y figurent, ce qui se trouve ensuite dans le serveur de stockage et à quoi ressemble le chemin du retour. Si quelque chose fait obstacle — extension manquante, drop-in étranger à cet endroit, wp-content non inscriptible, modèle manquant —, le bouton est désactivé et la raison est indiquée au-dessus ; le contrôle est refait côté serveur au moment de l'écriture. Pour confirmer, vous tapez INSTALLIEREN. L'écriture se fait alors d'abord dans un fichier voisin, dont la syntaxe est vérifiée par PHP lui-même (pour autant que exec() soit autorisé et qu'un binaire PHP soit joignable), et ce n'est qu'ensuite qu'il est renommé à sa place et passé en 0644. Raison de ce détour : un object-cache.php écrit à moitié serait une erreur survenant avant tout plugin — le site serait blanc, y compris la page d'administration par laquelle vous vouliez revenir en arrière. Chaque écriture reçoit en outre sa propre génération, afin que des entrées datant d'avant une suppression ne redeviennent pas valables d'un coup (sinon l'ancien nom du blog reviendrait, par exemple, et les administrateurs connectés seraient éjectés de leur session). Si un drop-in étranger se trouve déjà à cet endroit, il n'est ni écrasé ni supprimé.
En exploitation : lire les chiffres, vider, supprimer
Sous « Fonctionnement courant » figurent les chiffres de cette seule vue de page : établissement de la connexion en millisecondes, succès et échecs, combien d'entre eux venaient du serveur de stockage, combien de requêtes y ont été envoyées et combien de temps elles ont duré. Des statistiques dans la durée n'existent volontairement pas — les tenir coûterait à chaque appel plus que ce qu'elles mesurent. « Vider le cache d'objets » change le sel des clés au lieu d'envoyer FLUSHDB ou flush_all : ainsi plus aucune ancienne clé ne pointe vers une entrée valable, mais les données d'autres applications sur le même serveur restent intactes. Les entrées orphelines expirent au terme de la validité réglée — si celle-ci est sur 0, elles n'expirent jamais et s'accumulent jusqu'à ce que Redis ou Memcached fasse lui-même le ménage. Si vous modifiez des paramètres, c'est toujours ce qui est écrit dans le fichier qui s'applique ; Kakapo signale l'écart et propose « Mettre à jour le drop-in ». « Supprimer le drop-in » efface exactement un fichier, sans laisser derrière lui de ligne en base de données ni de planification ; à la désactivation du plugin, il disparaît également. Si vous ne voulez pas que le mot de passe figure en clair dans le fichier, vous le définissez comme KWPP_OC_AUTH dans le wp-config.php et laissez le champ vide — la constante a la priorité. Il en va de même pour l'hôte, le port, l'utilisateur, la base de données et le préfixe (KWPP_OC_HOST, KWPP_OC_PORT, KWPP_OC_USER, KWPP_OC_DB, KWPP_OC_PREFIX) ; un changement de serveur ne demande alors pas de réécrire le drop-in.