Vous devez comprendre la distinction claire entre ces deux produits pour comprendre comment les utiliser.
- APC est à la fois un cache OPCode et un backend rapide
- Memcache est juste un backend rapide
Utilisation d'APC comme cache OPCode
Installez simplement le module sur votre serveur
pecl install apc
Et activez-le dans votre php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Vous activez et affinez ensuite la configuration d'exécution en fonction, par exemple.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Redémarrez ensuite PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Après cela, il n'y a plus rien à faire. Confirmez qu'APC est activé avec un rapide phpinfo()
- mais sinon, à ce stade, la partie de cache OPCode d'APC est active.
Rien n'a besoin d'être configuré du côté de Magento.
Utiliser APC comme backend rapide
Vous devez ajouter ce qui suit à votre ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Rincez ensuite vos caches de magasin existants. Pour vérifier que cela fonctionne, chargez une page dans le front-end et le ./var/cache
répertoire doit rester vide.
Utiliser Memcache comme backend rapide
Vous devrez installer Memcache en tant qu'extension PHP et installer le démon Memcache respectif (Memcached) sur votre serveur.
pecl install memcache
Et activez-le dans votre php.ini
echo "extension=memcache.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=memcache.so" >> /etc/php5/conf.d/20memcache.ini (Debian)
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Installez ensuite Memcached sur le serveur. Pour RH / Centos, ajustez l'URL en fonction de votre version et de l'architecture du processeur.
rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
yum --enablerepo=rpmforge install memcached
apt-get install memcached (Debian)
Ensuite, modifiez Magento pour utiliser Memcache comme backend rapide, changez le chemin du socket en une connexion TCP / IP à votre convenance.
<cache>
<slow_backend>database</slow_backend>
<fast_backend>memcached</fast_backend>
<fast_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</fast_backend_options>
<backend>memcached</backend>
<memcached>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</cache>
Les mises en garde de Memcache et du tagging - qu'est - ce qu'il stocke
Memcache ne prend en charge qu'un seul niveau de relations clé-valeur, il ne peut donc pas stocker les balises de cache Magento (qui sont utilisées pour vider les données de cache indépendamment). Par conséquent, vous devez soit spécifier un slow_backend
pour maintenir la relation de balise de contenu de cache, soit n'en définir aucun.
Si vous définissez un slow_backend
, vous courez le risque que les balises de cache deviennent si grandes que les performances soient annulées; il y a aussi le problème inhérent que vous ne pouvez pas évoluer sur plusieurs serveurs si chaque serveur gère ses propres balises de cache.
Donc, lorsque vous utilisez Memcache, la meilleure approche (avec la mise en garde que vous ne pouvez pas vider les caches indépendamment), est de ne pas prendre la peine d'utiliser le slow_backend
.
Dans ce cas, nous vous suggérons de le supprimer <slow_backend>database</slow_backend>
et de le remplacer par:
<slow_backend>Memcached</slow_backend>
<slow_backend_options>
<servers>
<server>
<host>unix:///tmp/memcached.sock</host>
<port>0</port>
<persistent>0</persistent>
</server>
</servers>
</slow_backend_options>
Cela interrompra / désactivera le 2e niveau de mise en cache (et empêchera le stockage des balises), mais permettra toujours les performances de Memcache.
À utiliser
S'il s'agit d'un déploiement sur un seul serveur - il n'y a aucun mal à utiliser APC pour tout.
S'il s'agit d'une configuration distribuée, vous devrez utiliser Memcache comme backend rapide (pour que toutes les machines puissent accéder au magasin commun).
Plus inquiétant, c'est que si votre hébergeur ne peut pas vous dire la bonne configuration à utiliser, vous êtes certainement avec le mauvais hôte.
Attributions: sonassi.com , php.net , repoforge.org