« Memcached » : différence entre les versions

Aucun résumé des modifications
 
(2 versions intermédiaires par le même utilisateur non affichées)
Ligne 84 : Ligne 84 :


<syntaxhighlight lang="bash">sudo apt update
<syntaxhighlight lang="bash">sudo apt update
sudo apt install php-pear php8.3-dev libmemcached-dev build-essential
sudo apt install php-pear php8.3-dev libmemcached-dev build-essential zlib1g-dev
sudo pecl install memcached</syntaxhighlight>
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.
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.
Ligne 108 : Ligne 108 :
Dans <code>LocalSettings.php</code>, utilise l’implémentation PECL :
Dans <code>LocalSettings.php</code>, utilise l’implémentation PECL :


<syntaxhighlight lang="php">$wgMainCacheType   = 'memcached-pecl'; // au lieu de CACHE_MEMCACHED
<syntaxhighlight lang="php">
$wgParserCacheType = 'memcached-pecl';
$wgMainCacheType = CACHE_MEMCACHED;
$wgMessageCacheType = 'memcached-pecl';
$wgParserCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = 'memcached-pecl';
$wgMessageCacheType = CACHE_MEMCACHED;
$wgSessionCacheType = CACHE_MEMCACHED;
$wgMemCachedServers = [ '127.0.0.1:11211' ];</syntaxhighlight>
$wgMemCachedServers = [ '127.0.0.1:11211' ];</syntaxhighlight>
<blockquote>'''Pourquoi ?'''<br />
<blockquote>'''Pourquoi ?'''<br />
<code>memcached-pecl</code> utilise la classe native '''Memcached''' (C), plus rapide et avec support SASL, compression, etc.
<code>memcached-pecl</code> utilise la classe native '''Memcached''' (C), plus rapide et avec support SASL, compression, etc.
</blockquote>
</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]]