2012-04-13 8 views
1

Wir haben einen Server mit Magento 1.4.2 CE, APC 3.1.9 ist installiert und Magento ist so konfiguriert, dass es als Backend-Cache verwendet wird.Magento 1.4.2 + APC: Das Löschen des Cache hat keine Auswirkungen auf die Änderung der Einstellungen

Wir hatten ein merkwürdiges Verhalten beim Caching. Jede Änderung, die wir im Backend vornehmen, wird nicht angezeigt, bis Apache2 neu gestartet wurde/der APC-Opcode-Cache wurde gelöscht. Dies beinhaltet z.B. Ändern der Begrüßung oder Aktivieren/Deaktivieren von Google Analytics.

Die Frage: Warum cachiert APC ganze Seiten? Wir wollen dieses Verhalten nicht und es scheint nicht Standard zu sein. Für jede kleine Änderung im Backend müssen wir den Opcode-Cache löschen. Das Löschen des Magento Cache hilft nicht.

Für Vollständigkeit, hier ist unsere /etc/php5/conf.d/apc.ini:

extension=/usr/lib/php5/20090626/apc.so 
apc.enabled=1 
apc.file_update_protection=2 
apc.optimization=0 
apc.shm_size=128M 
apc.include_once_override=0 
apc.shm_segments=1 
apc.gc_ttl=7200 
apc.ttl=7200 
apc.num_files_hint=1024 
apc.enable_cli=0 

Aktivieren/Deaktivieren von Google Analytics wird auch keine Auswirkungen nach den 7200S TTL haben. Vielleicht, weil unser Cache zu diesem Zeitpunkt nicht voll ist. 40% seiner Kapazität werden mit einer Trefferquote von etwa 98% genutzt.

Dies ist die vollständige Einstellungen Ausgabe von apc.php:

apc.cache_by_default 1 
apc.canonicalize  1 
apc.coredump_unmap  0 
apc.enable_cli  0 
apc.enabled   1 
apc.file_md5  0 
apc.file_update_protection 2 
apc.filters 
apc.gc_ttl   7200 
apc.include_once_override 0 
apc.lazy_classes  0 
apc.lazy_functions  0 
apc.max_file_size  1M 
apc.mmap_file_mask 
apc.num_files_hint  1024 
apc.preload_path  
apc.report_autofilter 0 
apc.rfc1867   0 
apc.rfc1867_freq  0 
apc.rfc1867_name  APC_UPLOAD_PROGRESS 
apc.rfc1867_prefix  upload_ 
apc.rfc1867_ttl  3600 
apc.serializer  default 
apc.shm_segments  1 
apc.shm_size  128M 
apc.slam_defense  1 
apc.stat   1 
apc.stat_ctime  0 
apc.ttl   7200 
apc.use_request_time 1 
apc.user_entries_hint 4096 
apc.user_ttl  0 
apc.write_lock  1 
+0

Ich habe den Hinweis bekommen, den Magento-Backend-Cache zu deaktivieren, da er weniger Auswirkungen auf die Performance hat als das APC-Opcode-Caching. Das Deaktivieren des Cache in local.xml und das Löschen von var/cache hat wirklich geholfen. Die Speicher sind fast so schnell wie zuvor, aber der Fehler, dass ich den Opcode-Cache jedes Mal löschen musste, wenn ich eine einzelne Einstellung änderte, ist weg. – SebiF

Antwort

1

APC hält sowohl ein Terminal und Web-basierte Cache. Da Sie die "Web" zwischengespeicherten Zugriffe nur von einem webbasierten URL-Aufruf und nicht über die Befehlszeile löschen können, löscht der Apache nach dem Neustart den APC Web-basierten Cache. Wahrscheinlich möchten Sie ein Skript einrichten, um den Cache mit einem ähnlichen Skript zu löschen, sodass Sie es einfach über die CLI oder das Skript aufrufen können.

echo "Clearing APC web cache\n"; 
system('wget --spider --quiet http://localhost/clear_apc_cache.php'); 

echo "Clearing APC command line user cache\n"; 
apc_clear_cache('user'); 

echo "Clearing APC command line opcode cache\n"; 
apc_clear_cache(); 

Offensichtlich werden Sie müssen die clear_apc_cache.php entsprechende Datei mit dem gleichen zwei APC internen Verfahren zu schaffen, Anrufe innerhalb es, apc_clear_cache(); und apc_clear_cache('user');

Auch ich würde Setup ein lokales des APC-Cache anzuzeigen auch:

http://www.electrictoolbox.com/apc-php-cache-information/

+0

Nun, es geht nicht darum, das seltsame Verhalten von Magento zu beheben, aber es ist großartig, den Webserver nicht jedes Mal neu starten zu müssen. Das ist also akzeptiert. Übrigens. Wir haben bereits die Cache-Informationen ausgeführt, siehe Verweis auf apc.php im Text. – SebiF

0

Sie können auch apc.stat auf Null gesetzt. (apc.stat = 0) in Ihrer PHP.ini-Datei.

Wenn es auf 1 gesetzt ist, sucht es nicht nach Dateiupdates, was zu einer besseren Leistung führt, aber nach einem Update einen Apache-Neustart erfordert. Bei Einstellung auf 0 wird nach Dateiupdates gesucht und diese dem Cache hinzugefügt (dh Ihre Updates werden auf der Site sichtbar).

+1

Es tut mir leid, Ihnen zu sagen, dass dies falsch ist. Es funktioniert genau umgekehrt. apc.stat = 1 lässt APC nach geänderten Dateien suchen, während apc.stat = 0 die Überprüfung auf geänderte Dateien deaktiviert. Die Einstellung in der Konfiguration in der Frage ist in Ordnung. Siehe [php manual] (http://www.php.net/manual/de/apc.configuration.php#ini.apc.stat) – SebiF

Verwandte Themen