it-swarm.com.de

Welchen PHP (Opcode) Cache sollte man verwenden und warum?

Ich höre immer wieder von einigen PHP (Opcode) Caches wie - APC, XCache, Memcache, eAccelerator usw.

Aber ich konnte nie herausfinden, wie ich mich entscheiden sollte. Abgesehen von dem Leistungsvorteil, den ein Caching-System bieten soll, sollten andere Faktoren Anlass zur Sorge geben.

Zum Beispiel, warum Sie sagen werden, dass das X-Cache-System besser ist als das Y? Ich mache mir weniger Sorgen um den relativen Leistungszuwachs. Kleine Unterschiede zwischen zwei beliebigen Systemen sind weniger wichtig.

Wenn eine generische Antwort auf meine Frage nicht möglich ist, finden Sie hier einige Hinweise. Ich verwende dediziertes VPS mit Mediatemple (mit Root-Zugriff). RAM ist 512 MB (physisch) + 400 MB (Swap) Ich bin besorgt über WordPress und seine Cousins ​​WordPress-MU und BuddyPress. 90% unserer Codes/Websites fallen in die Familie WordPress).

Vielen Dank im Voraus für etwas Hilfe.

44
rahul286

Die von Ihnen aufgelisteten Produkte dienen unterschiedlichen Zwecken.

OPCode-Caches

Es gibt viele PHP Accelerators (OPCaches), wie auf dieser Wikipedia-Liste zu sehen. Wie bei Open Source-Produkten üblich, sind sie alle ziemlich ähnlich. XCache ist das lighttp = PHP Accelerator, und ist die Standardauswahl, wenn Sie dieses HTTPd ausführen. Es funktioniert auch gut mit Apache, jedoch scheint APC sozial etwas besser zu sein, da es offiziell unterstützt wird als Teil von PHP und wird im Gleichschritt mit der offiziellen PHP Distribution) veröffentlicht.

Ich habe usign eAccelerator aufgrund seiner verlangsamten Entwicklung und der Verzögerung gegenüber den PHP-Versionen aufgegeben und den offiziellen Status, den APC mit ähnlicher Leistung bietet.

Diese Produkte kommen normalerweise vorbei; Keine sofortige Änderung der Codeänderung. Mit großen Codebasen (Drupal, Wordpress) kann die Leistung bis zu x besser betragen, während die Antwortzeit und die Speichernutzung verringert werden.

Daten-Caching

Memcache ist ein etwas anderes Produkt - Sie können es sich als leichtes Schlüsselwertsystem vorstellen, das auf mehrere Server skaliert werden kann. Die Software muss verbessert werden, um Memcache zu unterstützen, und sie löst bestimmte Probleme besser als andere. Wenn Ihre Website eine Liste mit Echtzeit-Aktienwerten enthält, können Sie mit Memcache eine Resident-Liste des aktuellen Werts führen, der auf Ihrer Website angezeigt wird. Sie können es verwenden, um Sitzungsdaten für die kurzfristige Wiederverwendung zu speichern. Sie würden es nicht für andere Zwecke wie ganzseitige Caches oder als Ersatz für MySQL verwenden.

Es gibt auch Wordpress Addons wie WP-Super-Cache , die die Leistung von Wordpress drastisch verbessern können (tatsächlich kann WP-Super-Cache mit statischen HTML-basierten Websites mithalten) viele Fälle)

Zusammenfassend - Ich würde APC wärmstens empfehlen, wenn Sie ein "Einstellen und Vergessen, gut unterstütztes Produkt" wünschen.

33
SirStan

Auf stackoverflow wurde eine gute Antwort gepostet, die Ihre Frage gut beantwortet.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8

Nur um zu beachten, dass sich die Dinge ein wenig geändert haben und es scheint, dass APC nicht in PHP 6 Core enthalten sein wird.

APC hat eine langsame Entwicklung und es sieht so aus, als würde es niemals PHP 5.5-kompatibel sein. Aus diesem Grund werden Leute von PHP die Opcode-Cache-Erweiterung von Zend OPCache als PHP CORE-Erweiterung festlegen. Lesen Sie hier mehr http://wiki.php.net/rfc/optimizerplus .

Wichtiger Hinweis: Zend OPCache verfügt nicht über einen Benutzerdatencache wie APC. Wenn Sie also einen Benutzerdatencache benötigen, können Sie diesen zusammen mit Memcache verwenden.

6
Nemke

APC wird in PHP6 integriert, daher ist dies eine logische Wahl. Ich benutze es und der Leistungsschub ist erstaunlich. Wenn Sie etwas anderes als Opcodes zwischenspeichern müssen (d. H. DB-Abfrageergebnisse), können Sie APC auch dafür verwenden, aber es ist nicht möglich, APC-Caches zwischen mehreren Servern zu teilen. Wenn Sie nur auf einem einzelnen Server zwischenspeichern müssen, ist APC großartig. Wenn Sie auf mehrere Server skalieren müssen und einen Cache zwischen diesen teilen möchten, ist memcached Ihr Mann.

Eine Sache, die ich jedoch tun würde, ist, eine Wrapper-Klasse für jedes (Nicht-Opcode-) Caching zu erstellen, das Sie ausführen. Auf diese Weise können Sie die Caching-Engine austauschen, ohne Ihren Code zu ändern.

6
lo_fye

Wenn Sie PHP Version mindestens 5.50) ausführen, ist OpCache die beste Wahl (native PHP/PECL-Bibliothek). Bei der Installation über Binärdateien sollte es vorkompiliert sein.

http://php.net/manual/en/book.opcache.php

Wenn PHP Version vor 5.5) ausgeführt wird, ist APC (PHP/PECL nativer OpCode-Cache) die einfachste Wahl, obwohl dies als nicht gewartet und tot angesehen wird:

http://php.net/manual/en/book.apc.php

Die Verwendung der nativen OpCache-Funktionalität von PHP) sollte Ihnen die Mühe ersparen, Bibliotheken von Drittanbietern zu verwalten.

3
recurse

Memcache speichert Schlüssel/Wert-Paare zwischen, nicht Opcodes. Sie können es in Verbindung mit einem der Opcode-Caches verwenden.

0
user10699