Um die Performance von PHP-basierten Webanwendungen oder -Websites zu verbessern setzt man oft sogenannten Opcode-Cache ein. Darunter fallen solche Tools wie memcached, wincache oder auch APC (Alternative PHP Cache).
Ich kam jetzt zu APC, da WinCache und Tine 2.0, besser gesagt die Version des Zend Frameworks, auf dem Tine 2.0 basiert, WinCache nicht unterstützten. Ferner habe ich noch ein paar andere interne PHP-Anwendungen und dachte mir, es könnte interessant sein, das mal zu testen.
Zu erwähnen ist, das mein Heimserver nur ein Windows XP Professional ist und gerade mal zwei Benutzer versorgt.
Bei dem eingesetzten Webserver handelt es sich um die 32-bit Variante des Apache Webservers von Apache Lounge. PHP ist 5.3.8 NTS (Non Thread Safe) und über FastCGI angebunden.
Man kann auch andere Webserver (IIS, nginx, …) mit PHP und APC verwenden.
Je nach Setup müssen die Pfade angepasst werden. Bei der Auswahl der APC-Version ist auf Thread Safe und Non Thread Safe zu achten! Bei der unten genannten Download-Quelle ist ausserdem auf die Windows-Version zu achten!
Prinzipiell funktionieren folgende Konfigurationsschritte auch für Linux. Allerdings wird APC dort anders installiert und die Pfade müssen angepasst werden.
Installation
- Aktuelle APC-Version hier herunterladen und entpacken.
- Die Datei in “php_apc.dll” umbenennen und nach “C:\PHP\ext” kopieren.
- Die Datei “php.ini” editieren und folgende Zeile einfügen:
extension = php_apc.dll
- Den Webserver neu starten.
Bereits jetzt steht die neue Erweiterung zur Verfügung und verrichtet mit standardwerten ihren Dienst. Dies kann schon einiges, in Abhängigkeit von der PHP-Anwendung, bringen.
Alle möglichen Konfigurationseinträge finden sich hier.
Für die Performance am relevantesten ist
apc.shm_size = 32
Dieser ist standardmässig auf 32 MB konfiguriert. Damit wird die Cache-Größe im Arbeitsspeicher festgelegt.
Statistik (optional)
Im Entwickler-Paket von APC befindet sich ein PHP-Skript, das man auf dem Webserver hinterlegen kann. Darüber lässt sich im Browser eine Statistik und der aktuelle Status des Caches anzeigen.
- Aktuelles Entwickler-Paket hier herunterladen und entpacken.
- Die Datei “apc.php” suchen und nach “C:\Apache2\htdocs” bzw. in das entsprechende Webserver-Verzeichnis kopieren.
- Diese Datei editieren und einen Benutzernamen mit Kennwort festlegen.
Interessantes
Einen interessanten Blog-Eintrag zu diesem Thema, mit einer kurzen Beschreibung zum Testen, habe ich hier gefunden:
Troubleshooting
Falls die APC-Erweiterung nicht geladen wird, in der Datei “php.ini” die Zeile 809 prüfen. Sofern diese auskommentiert ist, Diese aktivieren und ggf. den richtigen Pfad setzen:
extension_dir = "C:/PHP/ext"
oder
extension_dir = "C:\PHP\ext"
Anmerkung: Bei einem weiteren Test unter Windows XP und Windows 7 hat auch folgende Zeile funktioniert:
extension_dir = "ext"
Falls man bei der Anmeldung an der APC-Statistikseite in einer Endlosschleife landet, kann man die Authentifizierung in der Datei “apc.php” deaktivieren. Allerdings sollte man dann weitere Maßnahmen zur Absicherung (htaccess, htpasswd) verwenden.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
Hell of a documentation! Ich danke Dir vielmals für die wirklich ausführliche Beschreibung.
Habe damit tatsächlich meinen Shop schneller bekommen, werde mal einen Backlink in meinem Blog hierher setzen.
Hi Uwe,
danke für das Feedback.
Immer her mit den Backlinks.
Was für ein Shopsystem verwendest du denn, falls man fragen darf?
Ich danke Dir!
Eigentlich komplett .net, versuche ich mich gerade an Shopware.de