Musisz zrozumieć wyraźne rozróżnienie między tymi dwoma produktami, aby zrozumieć, jak z nich korzystać.
- APC to zarówno pamięć podręczna OPCode, jak i szybki backend
- Memcache to tylko szybki backend
Używanie APC jako pamięci podręcznej OPCode
Po prostu zainstaluj moduł na swoim serwerze
pecl install apc
I włącz to w swoim php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Następnie włącz i dostosuj konfigurację środowiska wykonawczego do potrzeb, np.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Następnie uruchom ponownie PHP / Apache
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Po tym nie ma już nic więcej do roboty. Potwierdź, że APC jest włączony za pomocą szybkiego phpinfo()
- ale w przeciwnym razie w tym momencie część pamięci podręcznej OPCode w APC jest aktywna.
Po stronie Magento nie trzeba nic konfigurować.
Używanie APC jako szybkiego zaplecza
Musisz dodać następujące elementy do swojego ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Następnie opróżnij istniejące pamięci podręczne sklepów. Aby sprawdzić, czy działa, załaduj stronę w interfejsie, a ./var/cache
katalog powinien pozostać pusty.
Używanie Memcache jako szybkiego zaplecza
Musisz zainstalować Memcache jako rozszerzenie PHP i zainstalować odpowiedni Demon Memcache (Memcached) na swoim serwerze.
pecl install memcache
I włącz to w swoim 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)
Następnie zainstaluj Memcached na serwerze. W przypadku RH / Centos dostosuj adres URL do wersji i architektury procesora.
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)
Następnie zmodyfikuj Magento, aby używał Memcache jako szybkiego zaplecza, zmień ścieżkę gniazda na połączenie TCP / IP, aby pasowało.
<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>
Ostrzeżenia dotyczące Memcache i tagowania - co to jest
Memcache obsługuje tylko jeden poziom relacji klucz-wartość, więc nie może przechowywać tagów pamięci podręcznej Magento (używanych do niezależnego opróżniania pamięci podręcznej). W rezultacie musisz albo określić, slow_backend
aby utrzymać relację znacznika zawartości pamięci podręcznej, albo w ogóle jej nie definiować.
Jeśli zdefiniujesz a slow_backend
, ryzykujesz, że tagi pamięci podręcznej staną się tak duże, że wydajność zostanie zanegowana; istnieje również nieodłączny problem, którego nie można skalować na wielu serwerach, jeśli każdy serwer utrzymuje własne tagi pamięci podręcznej.
Dlatego przy korzystaniu z Memcache lepszym podejściem (z zastrzeżeniem, że nie można samodzielnie opróżniać pamięci podręcznych), jest nie zawracać sobie głowy używaniem slow_backend
.
W takim przypadku zalecamy usunięcie <slow_backend>database</slow_backend>
i zastąpienie go:
<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>
Spowoduje to uszkodzenie / wyłączenie 2. poziomu buforowania (i zapobiegnie przechowywaniu tagów), ale nadal pozwoli na wydajność Memcache.
Którego użyć
Jeśli jest to wdrożenie na jednym serwerze - użycie APC do wszystkiego nie zaszkodzi.
Jeśli jest to konfiguracja rozproszona - musisz użyć Memcache jako szybkiego zaplecza (aby wszystkie maszyny miały dostęp do wspólnego sklepu).
Bardziej niepokojące jest to, że jeśli twój dostawca hostingu nie może powiedzieć ci, która konfiguracja jest właściwa, z pewnością masz niewłaściwy host.
Atrybucje: sonassi.com , php.net , repoforge.org