« Memcached » : différence entre les versions

Aucun résumé des modifications
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 77 : Ligne 77 :
; apcu.enable=1
; apcu.enable=1
</syntaxhighlight>
</syntaxhighlight>
== ** Installer l’extension PHP Memcached via PECL** ==
Si tu veux la '''dernière version''' ou si ton système ne propose pas <code>php8.3-memcached</code> via APT, tu peux installer l’extension '''Memcached''' avec '''PECL''' :
<syntaxhighlight lang="bash">sudo apt update
sudo apt install php-pear php8.3-dev libmemcached-dev build-essential zlib1g-dev
sudo pecl install memcached</syntaxhighlight>
Pendant l’installation, PECL peut demander des options (compression, SASL). Tu peux laisser les valeurs par défaut si tu n’as pas besoin d’authentification.
Ensuite, active l’extension dans PHP :
<syntaxhighlight lang="bash">echo "extension=memcached.so" | sudo tee /etc/php/8.3/mods-available/memcached.ini
sudo phpenmod memcached</syntaxhighlight>
Redémarre PHP-FPM :
<syntaxhighlight lang="bash">sudo systemctl restart php8.3-fpm</syntaxhighlight>
Vérifie que l’extension est bien chargée :
<syntaxhighlight lang="bash">php -m | grep memcached</syntaxhighlight>
Tu dois voir <code>memcached</code>.<br />
Ou via <code>phpinfo()</code>, la section '''memcached support: enabled'''.
-----
=== '''Configurer MediaWiki avec PECL Memcached''' ===
Dans <code>LocalSettings.php</code>, utilise l’implémentation PECL :
<syntaxhighlight lang="php">
$wgMainCacheType = CACHE_MEMCACHED;
$wgParserCacheType = CACHE_MEMCACHED;
$wgMessageCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = [ '127.0.0.1:11211' ];</syntaxhighlight>
<blockquote>'''Pourquoi ?'''<br />
<code>memcached-pecl</code> utilise la classe native '''Memcached''' (C), plus rapide et avec support SASL, compression, etc.
</blockquote>
== Nettoyage ==
Commandes servant '''à “vider” complètement les caches et sessions en cours'''. Elles agissent sur deux systèmes différents : PHP et Memcached.
-----
==== 1️⃣ <code>sudo rm -f /var/lib/php/sessions/*</code> ====
* '''Objet''' : supprimer tous les fichiers de session PHP stockés sur disque.
* PHP stocke parfois les sessions utilisateurs dans des fichiers sur le serveur (<code>/var/lib/php/sessions/</code> par défaut sur Ubuntu/Debian).
* Quand tu fais :
<syntaxhighlight lang="bash" copy>sudo rm -f /var/lib/php/sessions/*</syntaxhighlight>
* Tu '''supprimes toutes les sessions en cours'''.
* Conséquence : tous les utilisateurs connectés devront se reconnecter.
* Utile pour repartir avec un état propre, par exemple après un problème de session ou après une migration.
-----
==== 2️⃣ <code>echo &quot;flush_all&quot; | nc 127.0.0.1 11211</code> ====
* '''Objet''' : vider '''toutes les données stockées dans Memcached'''.
* <code>nc 127.0.0.1 11211</code> → se connecte au serveur Memcached local sur le port 11211.
* <code>flush_all</code> → commande Memcached qui '''supprime toutes les clés en cache immédiatement'''.
Concrètement :
* Cache de pages MediaWiki (<code>parser cache</code>, <code>main cache</code>)
* Cache des sessions si <code>$wgSessionCacheType = 'memcached-pecl'</code>
* Tout ce qui est temporairement stocké pour accélérer les requêtes
-----
==== ⚠️ Important ====
* Après ces deux commandes, MediaWiki '''recalculera toutes les pages et sessions''' → certaines pages peuvent être lentes la première fois qu’on les charge (cache froid).
* C’est utile '''pour résoudre des problèmes de session corrompue ou de cache invalide''', mais pas à faire régulièrement en production.
-----
En résumé :
{| class="wikitable"
|-
! Commande
! Cible
! Effet
!
|-
| <code>rm -f /var/lib/php/sessions/*</code>
| Sessions PHP sur disque
| Déconnecte tous les utilisateurs, supprime les sessions
|
|-
| <code>echo &quot;flush_all&quot;              | nc 127.0.0.1 11211</code>
| Memcached
| Vide tous les caches (pages, sessions, objets)
|
|}
-----




[[Catégorie:Linux]] [[category:php]]
[[Catégorie:Linux]] [[category:php]]