Quantcast
Channel: PHP Gangsta - Der PHP Blog mit Praxisbezug » APC
Viewing all articles
Browse latest Browse all 5

APCu: Der neue User-Cache

0
0

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.


Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images