PHP Skripte beschleunigen mit APC
Ein großer Nachteil von PHP ist die Tatsache, dass PHP eine Skriptsprache ist, deshalb wird der Code nicht vorher compiliert und optimiert, sondern das Skript wird direkt zur Laufzeit übersetzt. Das ist natürlich langsam. Da aber PHP die Nummer 1 bei den Webskripten ist und von jeden Web Entwickler im Schlaf beherrscht wird kann man auch nicht einfach hergehen und die Technologie einfach ändern. Es gibt viele unterschiedliche Ansätze langsame Skripts zu beschleunigen. Ein Ansatzpunkt ist zB das Cachen von diesen, zur Laufzeit ausgeführten Übersetzungen von PHP Skripts.
Was ist APC?
APC steht für Alternative Page Cache und ist eine Methode, das langsame übersetzen von PHP Code zur Laufzeit zu beschleunigen. Führt man ein Skript also immer wieder aus, wird jedes mal der PHP Code in einen Bytecode übersetzt, welcher vom Rechner verstanden wird. APC speichert diesen einmal compilierten Bytecode im Hauptspeicher ab und hält in auf Abruf. Wird das Skript nun ein 2. mal geladen, ist die Ausführungszeit deutlich schneller. Der Code wird nicht neu übersetzt, sondern direkt aus dem Hauptspeicher genommen.
Installation
APC kann man auf Linux Systemen sehr einfach installieren. Dazu reichen folgende Kommandozeilen:
sudo apt-get install php-apc
Fertig. Danach sollte man den Webserver neu starten, damit er nun APC verwenden kann.
sudo service apache2 restart
Wenn man bei seiner Apache2 Installation nicht mod_php sondern php5-fpm verwendet, dann sollte man nun dieses Service auch neu starten:
sudo service php5-fpm restart
Konfiguration
Eigentlich reicht die Installation vollkommen aus um APC zu verwenden. Das Problem mit APC ist aber, dass nun die ganzen Bytecodes im Hauptspeicher gespeichert werden und das langsam zu einer Fragmentierung des Speichers kommt. Das ist insofern schlecht, da der Apache Webserver selber sehr viel Hauptspeicher benötigt und es so schnell zu Problemen kommen kann. Um den Speicher im Auge zu behalten und eventuell den Cache zu leeren gibt es ein eigenes PHP Skript. Dieses installieren wir einfach in unser Webserver Hauptverzeichnis (oder ein beliebig anderes):
wget -O apc.php "http://git.php.net/?p=pecl/caching/apc.git;a=blob_plain;f=apc.php;hb=HEAD"
Das Skript stellt die Cache Kontrolle bereit. Man sieht hier sehr übersichtlich was APC eigentlich macht und man kann den Cache auch über das Interface löschen. Manchmal ist das sogar erforderlich.
Der Cache selber kann größer oder kleiner eingestellt sein. Man kann die Größe vom Cache über die PHP Konfiguration ändern. Um den APC Cache zum Beispiel auf 64 MB zu vergrößern editiert man die Datei /etc/php5/conf.d/20-apc.ini. Dort einfach folgende Zeile eintragen oder ausbessern:
apc.shm_size=64
Nicht vergessen, bei neueren PHP Versionen muss man 64M schreiben.
Moin,
du hast einen Schreibfehler. sudo soll, sudp ist es.
Gruß,
Malte
Danke, habs ausgebessert.