2009-08-11 7 views
7

Comment utiliser memcache dans Joomla? Je suis un novice dans ce domaine alors s'il vous plaît être descriptif avec votre réponse.Comment utiliser memcached avec Joomla

+2

Avez-vous besoin de * memcached? – ceejayoz

+1

Les sites IMHo qui utilisent memcached doivent généralement rester loin de Joomla ou de tout CMS en boîte pour cette raison. la raison serait - pour mettre en place memcached - vous devrez changer le code php source (peut-être parfois de façon drastique). Joomla (ou tout autre CMS en boîte) a été conçu pour les gens qui préfèrent concevoir un modèle au lieu de changer le code source. Aussi, vous ne devriez pas changer le noyau de Joomla car ce sera plutôt un hack et vous aurez des problèmes de mise à jour dans le futur, ce qui rendra votre site très facile à pirater. N'utilisez memchached que si vous avez un cluster. – Stann

+8

Le noyau de @Andre Joomla a une couche de mise en cache qui implémente memcached, XCache, et les caches de fichiers plats parmi d'autres. Joomla Framework dispose d'une classe de mise en cache dans laquelle vous envoyez une paire clé-valeur, puis gère la mise en cache en fonction du pilote sélectionné dans la configuration. Il n'est absolument pas nécessaire de pirater Joomla pour ajouter memcached; il est déjà intégré. – jlleblanc

Répondre

15

Vous devrez installer memcached sur votre serveur et aurez probablement besoin d'un accès root pour le faire. Vous pouvez obtenir memcached à partir de http://www.danga.com/memcached/. Il nécessite libevent, qui peut être téléchargé ici: http://www.monkey.org/~provos/libevent/

Enfin, vous aurez besoin de l'extension PHP PECL pour memcache. Pour installer, vous devez aller sur le serveur où PHP est installé et exécutez la commande suivante:

pecl install memcache 

Encore une fois, vous aurez probablement besoin un accès root sur votre serveur pour le faire. Après avoir libevent, memcached et les extensions PECL installées, accédez à la configuration globale dans Joomla et choisissez Memory Cache comme gestionnaire de cache sous Paramètres du cache. Après avoir enregistré la configuration globale, ouvrez-la à nouveau et d'autres entrées doivent apparaître sous l'entrée Cache Handler. Définissez Memory Chache Server sur localhost et le port sur 11211. Cela doit correspondre aux paramètres que vous utilisez pour exécuter memcached à partir de la ligne de commande.

EDIT: Vous pouvez également utiliser XCache non seulement pour stocker des données d'une manière similaire à Memcache, mais également pour mettre en cache l'opcode généré par PHP. De cette façon, au lieu de lire le code PHP depuis le disque et de l'analyser à chaque fois, il conservera le code en mémoire pour la prochaine requête.

Veillez à sélectionner XCache en tant que gestionnaire de cache dans la configuration globale. Lisez ceci pour des informations sur l'installation XCache: http://xcache.lighttpd.net/wiki/InstallFromSource

+0

Awesome Merci a jlleblanc – webkul

5

Afin de Joomla à utiliser memcache la mise en cache de session, vous devez modifier manuellement le configuration.php et modifier cette ligne:

public $session_handler = 'database'; 

à celui-ci:

public $session_handler = 'memcache'; 

Et voilà ce qui manque partout, vous avez besoin d'ajouter une nouvelle option: memcache_settings

public $memcache_settings = 'a:3:{s:10:"persistent";s:1:"0";s:11:"compression";s:1:"0";s:7:"servers";a:1:{i:0;a:2:{s:4:"host";s:9:"127.0.0.1";s:4:"port";s:5:"11211";}}}'; 

Ceci est un tableau multy-dimentianal sérialisé. J'utilise ce code pour générer la chaîne ci-dessus:

$a = array(
    "persistent" => "0", 
    "compression" => "0", 
    "servers" => array(
    "0" => array(
     "host" => "127.0.0.1", "port" => "11211") 
    ) 
    ); 

echo(serialize($a)); 

Si vous n'ajoutez pas l'option memcache_settings vos sessions ne seront jamais travailler avec memcache.

4

Ces paramètres dans configuration.php travail pour memcached dans Joomla 3.3+

public $cache_handler = 'memcached'; 
public $memcached_server_host = '127.0.0.1'; 
public $memcached_server_port = '11211'; 
public $memcached_persist = '1'; 
public $memcached_compress = '1'; 
public $cachetime = '15'; 
public $session_handler = 'memcached'; 
public $session_memcached_server_host = '127.0.0.1'; 
public $session_memcached_server_port = '11211'; 

Pour installer memcached sur un système Debian:

apt-get install memcached php5-memcached 

(vous pouvez également utiliser memcache en place de chaque apparition de memcached dans les variables public ci-dessus & installer l'extension php5-memcache plus)

Mise à niveau vers php5.5 vous donnera un Zend Opcode Cache intégré - cela pourrait être utilisé avec APCu (UCPA est le Alternative PHP Cache avec l'opcode Cache enlevé) - le cache userland localement si vous n'avez pas besoin d'un cache de mémoire distribuée (memcached)

Pour un seul VPS APCu a une empreinte mémoire inférieure & est un cache plus approprié (en particulier avec php5.5) & peut être réglé configuration.php avec:

public $cache_handler = 'apc'; 
public $session_handler = 'apc'; 
+0

Ces paramètres pour le travail memcached sur Joomla 3.7 – David

0

Il est préférable de ne pas utiliser APC pour le cache backend. Cela peut causer beaucoup de fragmentation. Je l'ai seulement vu dégrader les performances de Joomla.