APCu: Der neue User-Cache
Speziell für PHP 5.5 gibt es die User-Cache-Extension APCu: Seit PHP 5.5 ist der Bytecode-Cache OpCache enthalten, die bisher genutzte Extension APC wird dann nicht mehr benötigt. Doch wer APC nicht nur wegen seiner Bytecode-Cache-Fähigkeit installiert sondern auch die User-Cache-Funktionen genutzt hat, kann jetzt die abgespeckte Erweiterung APCu nutzen, in der alle Bytecode-Funktionen entfernt wurden.
(Wer die Upload-Progress-Funktionen von APC genutzt hat, kann nun die eingebauten Session-Upload-Progress-Funktionen nutzen, aber das ist ein anderes Thema)
Die relativ schlanke Extension APCu (GitHub-Repository), in der nur noch die übrig gebliebenen Funktionen wie z.B. apc_store() und apc_fetch() enthalten sind, wurde dann noch etwas verbessert. Vorher war das unmöglich da die komplizierte große APC-Extension nur schwer wartbar war.
Die Version 4.0.1 von APCu sollte unbedingt vermieden werden da sie nicht APC-kompatibel ist, es gab da einen Bug. Also 4.0.0 oder besser >=4.0.2 verwenden. Die Installation ist denkbar einfach. Falls PHP 5.5 über das Paketmanagement von Ubuntu installiert wurde reicht ein einfaches:
sudo apt-get -V install php5-apcu
Oder via PECL installieren:
sudo pecl install APCu-beta sudo -i echo "extension=apcu.so" > /etc/php5/mods-available/apcu.ini ln -s /etc/php5/mods-available/apcu.ini /etc/php5/conf.d/20-apcu.ini
Oder selbst kompilieren aus dem GitHub-Repository:
git clone https://github.com/krakjoe/apcu.git cd apcu pecl package package.xml sudo pecl install -f apcu-4.0.2.tgz echo "extension=apcu.so" > /etc/php5/mods-available/apcu.ini ln -s /etc/php5/mods-available/apcu.ini /etc/php5/conf.d/20-apcu.ini
Danach nicht vergessen den Webserver/FPM neu zu starten. Mit einem kleinen Testscript kann man dann feststellen ob die User-Cache-Funktionen wie erwartet funktionieren:
<? $var = apc_fetch('testvar'); if ($var===false) $var=0; echo $var; apc_store('testvar', ++$var);
Bei jedem Refresh der Seite zählt der Zähler hoch.
Der Vollständigkeit halber sollte noch erwähnt werden dass es noch eine Alternative zu APCu gibt: Yac (Yet another Cache). Diese neue Extension ist schneller als APCu, aber nicht kompatibel, sodass man alle apc_* Funktionen ändern muss. Dafür erhält man einen User-Cache ohne Locks, der aber laut Autor noch nicht in Produktionsumgebungen genutzt werden sollte. Wer aber das letzte bischen Performance braucht, kann sich Yac mal anschauen.
Das letzte mal, als ich die Benchmarks zu Yac gesehen habe, waren die sehr direkt auf Yac zugeschnitten. Wenn ich mich recht erinnere hatten sie für die Benchmarks Keys gewählt, mit denen APC Probleme hat, so dass es eben schlechter abschnitt. Auf mich wirkt das nicht sehr vertrauenswürdig
https://github.com/laruence/yac/issues/7
KingCrunch
14 Dez 13 at 20:44
[…] als Bytecode-Cache und auch als lokalen Usercache. Nun wechseln wir weg von APC hin zu OpCache und APCu. Da wir dort die meisten Probleme erwarteten mußten wir dies besonders gut testen, denn in den […]
Verteilung der PHP-Versionen, Verbreitung von 5.5 | PHP Gangsta - Der PHP Blog mit Praxisbezug
30 Mrz 14 at 14:55
Danke Dir für die kurze Anleitung! Leider hat Ubuntu genau die 4.0.1 in den Repos, so das ich über pecl gehen musste.
Zunächst schlug das kompilieren fehl, aber ein „apt-get install libpcre3-dev“ brachte Abhilfe. Jetzt rennt der Cache und die Tests können beginnen 🙂
Martin
2 Apr 14 at 00:56
[…] zu speichern, prüfen und wieder auszulesen, dann wird auch alles wieder gut, einfach das Paket php5-apcu […]
PHP 5.6 unter Debian Wheezy installieren
5 Apr 15 at 19:21
[…] Dies wird durch den ZendOP Code Cache erreicht. Zusätzlich benutzt der GRC die so genannte APCu Technologie. Diese ermöglicht es alle benutzerbezogenen Daten in einem separaten Speicher abzulegen. So wird […]
Optimierter Global Rocket Cache für höhere Geschwindigkeit beim Surfen | PHP Archiv
28 Mai 15 at 15:29
[…] found this. But I need a solution for […]
[Solved] How to install apcu in windows
12 Jan 22 at 05:36