Você precisa entender a distinção clara entre esses dois produtos para entender como usá-los.
- A APC é um cache OPCode e um back-end rápido
- Memcache é apenas um back-end rápido
Usando APC como um cache OPCode
Basta instalar o módulo no seu servidor
pecl install apc
E ative-o no seu php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Você então habilita e ajusta a configuração do tempo de execução para se adequar, por exemplo.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Em seguida, reinicie o PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Depois disso, não há mais nada a fazer. Confirme se o APC está ativado com uma rápida phpinfo()
- mas, nesse caso, a parte do cache do OPCode do APC está ativa.
Nada precisa ser configurado no lado do Magento.
Usando a APC como um back-end rápido
Você precisa adicionar o seguinte ao seu ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Em seguida, limpe seus caches de loja existentes. Para verificar se está funcionando, carregue uma página no front-end e o ./var/cache
diretório deverá permanecer vazio.
Usando o Memcache como um back-end rápido
Você precisará instalar o Memcache como uma extensão PHP e instalar o respectivo Memcache Daemon (Memcached) em seu servidor.
pecl install memcache
E habilite-o no seu 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)
Em seguida, instale o Memcached no servidor. Para RH / Centos, ajuste a URL para se adequar à sua versão de lançamento e arquitetura da CPU.
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)
Em seguida, modifique o Magento para usar o Memcache como um back-end rápido, altere o caminho do soquete para uma conexão TCP / IP adequada.
<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>
As advertências do Memcache e da marcação - o que é armazenar
O Memcache suporta apenas um único nível de relacionamentos de valor-chave, portanto, não pode armazenar as tags de cache do Magento (que são usadas para liberar os dados do cache independentemente). Como resultado, você precisa especificar a slow_backend
para manter o relacionamento da tag de conteúdo do cache ou não definir um.
Se você definir a slow_backend
, corre o risco de as tags de cache aumentarem tanto que o desempenho é negado; também há o problema inerente que você não pode escalar em vários servidores se cada servidor estiver mantendo suas próprias tags de cache.
Portanto, ao usar o Memcache, a melhor abordagem (com a ressalva de que você não pode liberar caches de forma independente) é não se incomodar em usar o slow_backend
.
Nesse caso, sugerimos removê <slow_backend>database</slow_backend>
-lo e substituí-lo por:
<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>
Isso interromperá / desabilitará o segundo nível de armazenamento em cache (e impedirá o armazenamento de tags), mas ainda permitirá o desempenho do Memcache.
Qual usar
Se for uma implantação de servidor único - não há mal algum em usar a APC para tudo.
Se for uma configuração distribuída - você precisará usar o Memcache como back-end rápido (para que todas as máquinas possam acessar o armazenamento comum).
Mais preocupante é que, se o seu provedor de hospedagem não puder lhe dizer a configuração correta a ser usada, você certamente estará com o host errado.
Atribuições: sonassi.com , php.net , repoforge.org