logo

Extra Block Types (EBT) - Neue Erfahrung im Layout Builder❗

Extra Block Types (EBT) - gestylte, anpassbare Blocktypen: Diashows, Registerkarten, Karten, Akkordeons und viele andere. Eingebaute Einstellungen für Hintergrund, DOM Box, Javascript Plugins. Erleben Sie die Zukunft der Layouterstellung schon heute.

Demo EBT-Module EBT-Module herunterladen

❗Extra Absatztypen (EPT) - Erfahrung mit neuen Absätzen

Extra Paragraph Types (EPT) - analoger, auf Absätzen basierender Satz von Modulen.

Demo EPT-Module EPT-Module herunterladen

Scroll

Konfiguration von APC. Caching in PHP.

26/05/2025, by Ivan

!!! Achtung !!! Verwenden Sie APC nicht, wenn Sie PHP Version 5.5 oder höher haben, da OPCache APC ersetzt und in PHP integriert ist.

Am 21. März 2013 wurde die PHP 5.5 Beta 1 mit "Zend OPCache" veröffentlicht – es sieht stark danach aus, dass dies die zukünftige Ablösung für APC sein wird, da es in den PHP-Kern integriert ist und für jede neue Version gepflegt werden muss.

APC (Alternative PHP Cache) ist ein alternativer PHP-Cache, der den PHP-Opcode zwischenspeichert. Entwickler beschreiben es als "eine freie, offene und zuverlässige System zur Zwischenspeicherung und Optimierung des PHP-Bytecodes".

PHP ist eine Hochsprache, die auf verschiedenen Plattformen kompiliert werden kann. Content-Management-Systeme wie Drupal bestehen aus Hunderten oder Tausenden von PHP-Skripten. Die modulare Natur bedeutet, dass beim Laden einer Seite tatsächlich Hunderte von Skripten ausgeführt werden können. Im Gegensatz zu anderen Hochsprachen wird PHP "on the fly" kompiliert, das heißt, das Skript wird zur Laufzeit in Bytecode umgewandelt. Hier hilft APC: APC speichert eine kompilierte Kopie des Skripts im Speicher und macht es bereit, was die benötigten Ressourcen für Drupal erheblich reduziert. (In einigen Sprachen wird dies automatisch gemacht – Python beispielsweise kompiliert Skripte und speichert sie nahe am Originalskript für den Webserver zur weiteren Nutzung.)
Die Konfiguration von APC ist recht einfach. Zuerst muss es installiert werden:

sudo apt-get install php-pear
sudo apt-get install php5-dev apache2-prefork-dev build-essential
sudo pecl install apc

Dann kopieren Sie die Datei apc.php (die ich dem Tutorial beigefügt habe) auf den Server und starten anschließend Apache neu:

sudo /etc/init.d/apache2 restart

Sie können nun die Datei http://test/apc.php öffnen und die APC-Statistiken ansehen.

Drupal APC

Die Statistik sieht etwa so aus. Wie man sieht, ist die Cache-Trefferquote nicht sehr gut. Es gibt viele Cache-Misses und nur wenige Treffer, außerdem ist die Fragmentierung des APC-Speichers hoch. Dies deutet auf eine ineffiziente Nutzung von APC hin. Warum das passiert:

Speichermangel: Wenn Sie 8 MB für APC zugewiesen haben, die geladenen Skripte aber 12 MB groß sind, reichen die 8 MB nicht aus, was zu vielen neuen Misses führt.

Fragmentierung: Möglicherweise haben Sie 32 MB für APC reserviert, aber die Dateien summieren sich auf 40 MB. Manche Module werden selten genutzt und liegen im Cache „untätig“, während aktive Dateien neuen Cache benötigen. Dateien werden nicht immer blockweise gespeichert, große Dateien können aufgeteilt werden, was zu Speicherlücken führt.

Nun zu den wichtigsten APC-Konfigurationsparametern. Die APC-Konfigurationsdatei liegt unter Debian/Ubuntu meist in /etc/php5/conf.d/apc.ini:

apc.enabled=1

APC ist aktiviert. Diese Einstellung ist offensichtlich, aber sehr wichtig. Das Deaktivieren von APC kann die Leistung auf Produktionsservern verschlechtern.

apc.shm_segments=1
apc.shm_size=32

Diese Einstellungen bestimmen, wie viel Speicher APC zugewiesen wird. apc.shm_segments=1 bedeutet ein Speichersegment, apc.shm_size=32 die Größe des Segments in Megabyte. Sie können die Größe auf 64 MB oder mehr erhöhen und Apache neu starten. Wenn die Cache-Misses nicht unter 1 % sinken, erhöhen Sie weiter auf z.B. 128 MB. Dies ist ein zentraler Parameter für APC.

apc.cache_by_default=1

;apc.filters=

APC wird für alle PHP-Skripte genutzt. Die Zeile mit apc.filters ist auskommentiert.

apc.cache_by_default=0
apc.filters="+drupal6"

Mit diesen Einstellungen wird APC nur für Drupal 6 Dateien verwendet, was hilfreich ist, wenn man Caches für andere Anwendungen (z.B. PhpMyAdmin) separat halten möchte.

apc.stat=1

Dieser Parameter beeinflusst die Leistung stark. Bei aktiviertem apc.stat verbleiben gecachte Dateien im Cache, bis sie gelöscht werden. Ist apc.stat deaktiviert, vergleicht APC bei jedem Aufruf die Änderungszeit des Skripts mit der im Cache gespeicherten Version und lädt ggf. eine neue Version. Für Produktivserver ist es sinnvoll, apc.stat=1 zu setzen, für Entwicklungsumgebungen empfiehlt es sich, es auszuschalten. Bei aktiviertem apc.stat sollten Sie den APC-Cache bei Updates von Drupal-Kern und Modulen leeren.

apc.ttl=0

Diese Einstellung legt fest, nach wie vielen Sekunden der Cache geleert wird. 0 bedeutet, dass der Cache nicht automatisch gelöscht wird. Standard ist 7200 Sekunden (2 Stunden). Es ist üblich, 0 zu setzen, um den Cache nicht periodisch zu leeren.

apc.rfc1867=1

Diese Einstellung kann für Drupal aktiviert werden, wenn Sie möchten, dass APC den Status von Datei-Uploads anzeigt.

apc.num_files_hint=2048

Diese Einstellung ist wichtig bei mehreren Websites auf einem Server, da ein Drupal bis zu 500 Dateien im Cache halten kann. Um zu verhindern, dass der Cache einer Website den einer anderen überschreibt, sollten Sie diesen Wert erhöhen (Standard ist 1024).

Nach Änderungen in der Konfiguration sollten Sie den Server neu starten. Dann sehen Sie in den APC-Diagrammen solche Werte:

Drupal APC

Achten Sie darauf, dass die Anzahl der Cache-Misses (MISS) möglichst nahe bei Null liegt und die Fragmentierung 0 % beträgt.