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.