Memcached
Memcached est un système de cache en mémoire rapide et léger utilisé pour stocker temporairement des données (objets, résultats de requêtes, sessions) afin d’accélérer les applications web. Il fonctionne en RAM, est multi-thread, et permet à plusieurs processus ou serveurs d’accéder à un cache partagé.
Sur Debian, le paquet memcached installe le démon serveur, la configuration système, et des outils pour gérer le cache, tandis que l’extension PHP (php-memcached) permet aux applications PHP (comme MediaWiki) de l’utiliser facilement.
Installer et activer Memcached sur Debian/Ubuntu avec PHP 8.3-FPM pour MediaWiki.
1️⃣ Installer Memcached côté serveur
sudo apt update
sudo apt install memcached libmemcached-tools
Vérifier que le service est actif :
systemctl status memcached
Tu dois voir :
Active: active (running)
Pour démarrer/activer au boot :
sudo systemctl enable --now memcached
2️⃣ Installer l’extension PHP Memcached pour PHP 8.3
sudo apt install php8.3-memcached
Redémarre PHP-FPM pour que l’extension soit prise en compte :
sudo systemctl restart php8.3-fpm
Vérifie l’extension :
php -m | grep memcached
Tu dois obtenir :
memcached
Ou avec une page phpinfo() côté web, tu dois voir memcached support: enabled.
3️⃣ Configurer MediaWiki pour utiliser Memcached
Dans LocalSettings.php, remplace tes caches existants :
$wgMainCacheType = CACHE_MEMCACHED;
$wgParserCacheType = CACHE_MEMCACHED;
$wgMessageCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = [ '127.0.0.1:11211' ];
$wgUseFileCache = false; // inutile avec Memcached
4️⃣ Vérifier que Memcached fonctionne avec MediaWiki
- Crée une nouvelle page test
- Vérifie qu’elle est visible dans les catégories immédiatement après création
- Optionnel : purger les jobs pour être sûr que le parser cache est à jour :
php maintenance/runJobs.php --maxjobs=5000
5️⃣ Bonus : améliorer stabilité avec OPcache et APCu
Tu peux garder OPcache et APCu pour PHP, mais MediaWiki utilisera Memcached pour tout le cache partagé. Exemple :
$wgMainCacheType = CACHE_MEMCACHED; // partagé
$wgParserCacheType = CACHE_MEMCACHED; // partagé
$wgMessageCacheType = CACHE_MEMCACHED; // partagé
// côté PHP
; opcache.enable=1
; apcu.enable=1