Sie müssen die klare Unterscheidung zwischen diesen beiden Produkten verstehen, um zu verstehen, wie sie verwendet werden.
- APC ist sowohl ein OPCode Cache als auch ein Fast Backend
- Memcache ist nur ein schnelles Backend
Verwendung von APC als OPCode-Cache
Installieren Sie einfach das Modul auf Ihrem Server
pecl install apc
Und aktivieren Sie es in Ihrem php.ini
echo "extension=apc.so" >> /usr/lib/local/php.ini (RedHat/Centos)
echo "extension=apc.so" >> /etc/php5/conf.d/20apc.ini (Debian)
Anschließend aktivieren Sie die Laufzeitkonfiguration und passen sie an, z.
apc.enabled
apc.shm_segments
apc.shm_size
apc.optimization
apc.num_files_hint
apc.user_entries_hint
apc.ttl
apc.user_ttl
...
Starten Sie dann PHP / Apache neu
/etc/init.d/httpd restart (RedHat/Centos)
/etc/init.d/apache2 restart (Debian)
Danach gibt es nichts mehr zu tun. Bestätigen Sie, dass APC aktiviert phpinfo()
ist, und drücken Sie kurz. Andernfalls ist zu diesem Zeitpunkt der OPCode-Cache-Teil von APC aktiv.
Auf Magentos Seite muss nichts konfiguriert werden.
Verwendung von APC als schnelles Backend
Sie müssen Folgendes zu Ihrer hinzufügen ./app/etc/local.xml
<global>
...
<cache>
<backend>apc</backend>
<prefix>mystore_</prefix>
</cache>
...
</global>
Leeren Sie dann Ihre vorhandenen Geschäfts-Caches. Um zu überprüfen, ob es funktioniert, laden Sie eine Seite in das Front-End und das ./var/cache
Verzeichnis sollte leer bleiben.
Verwenden von Memcache als schnelles Backend
Sie müssen Memcache als PHP-Erweiterung installieren und den entsprechenden Memcache-Daemon (Memcached) auf Ihrem Server installieren.
pecl install memcache
Und aktivieren Sie es in Ihrer 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)
Installieren Sie dann Memcached auf dem Server. Passen Sie die URL für RH / Centos an Ihre Release-Version und Ihre CPU-Architektur an.
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)
Ändern Sie dann Magento so, dass Memcache als schnelles Backend verwendet wird, und ändern Sie den Socket-Pfad entsprechend in eine TCP / IP-Verbindung.
<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>
Die Vorbehalte von Memcache und Tagging - was speichert es?
Memcache unterstützt nur eine Ebene von Schlüssel-Wert-Beziehungen, daher können die Magento-Cache-Tags (die zum unabhängigen Leeren von Cache-Daten verwendet werden) nicht gespeichert werden. Infolgedessen müssen Sie entweder a angeben slow_backend
, um die Cache-Inhalts-Tag-Beziehung beizubehalten, oder keines definieren.
Wenn Sie ein definieren slow_backend
, besteht das Risiko, dass die Cache-Tags so groß werden, dass die Leistung negiert wird. Es gibt auch das inhärente Problem, dass Sie nicht auf mehrere Server skalieren können, wenn jeder Server seine eigenen Cache-Tags verwaltet.
Wenn Sie also Memcache verwenden, ist der bessere Ansatz (mit der Einschränkung, dass Sie Caches nicht unabhängig voneinander leeren können), die Verwendung von Memcache nicht zu stören slow_backend
.
In diesem Fall empfehlen wir, es zu entfernen <slow_backend>database</slow_backend>
und durch Folgendes zu ersetzen:
<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>
Dies unterbricht / deaktiviert die 2. Ebene des Cachings (und verhindert das Speichern von Tags), ermöglicht jedoch weiterhin die Leistung von Memcache.
Welche zu benutzen
Wenn es sich um eine Einzelserver-Bereitstellung handelt, kann es nicht schaden, APC nur für alles zu verwenden.
Wenn es sich um eine verteilte Einrichtung handelt, müssen Sie Memcache als schnelles Backend verwenden (damit alle Computer auf den gemeinsamen Speicher zugreifen können).
Wenn Ihr Hosting-Anbieter Ihnen nicht sagen kann, welches Setup Sie verwenden sollen, haben Sie mit Sicherheit den falschen Host.
Zuschreibungen: sonassi.com , php.net , repoforge.org