In diesem Artikel möchte ich euch zeigen wie man das Caching mittels OPCache für bestimme Verzeichnisse deaktivieren kann. (Wer vorab noch einen kurzen Einstieg in das Thema OPCache braucht, scrollt am besten bis zum blauen Kästchen in diesem Artikel vor.) Zwar ist OPCache in fast allen Fällen eine gute Idee und dessen Verwendung begrüßenswert, jedoch gibt es wie in fast allen Dingen auch hier Ausnahmen. Vorallem, wenn es um die Entwicklung geht oder wenn ein Bugfix getestet werden soll, kann es Sinn machen OPCache zu deaktivieren.
Da auf dem Webserver jedoch oftmals noch andere Projekte laufen, die von OPCache profitieren, kann eine komplette Deaktivierung von OPCache für solche Testfälle keine Option sein. Deshalb geht es in diesem Artikel darum, wie man OPCache auf Verzeichnis-Ebene deaktivieren kann.
Da nun klar sein sollte, was OPCache macht und warum wir nur vereinzelte Verzeichnisse deaktivieren wollen, kommen wir zur Umsetzung unseres Vorhabens.
OPCache für Verzeichnis deaktivieren
Um OPCache auf Verzeichnisebene zu deaktivieren, kann eine sogenannte Blacklist erstellt werden. Diese Blacklist ist eine Textdatei die beliebig viele Datei- und/oder Verzeichnispfade enthalten kann, welche nicht durch OPCache gecached werden sollen. Für unser Beispiel wollen wir das Verzeichnis /var/www/developer sowie die Datei /var/www/dynamic_values.php vom Caching ausschließen. Dazu legen wir eine Blacklist-Datei mit folgendem Inhalt an.
/var/www/developer/* /var/www/dynamic_values.php
(Die * Wild-Card ist zu beachten, damit alle Dateien im Verzeichnis ausgenommen werden.)
Wo die Datei gespeichert wird, spielt keine Rolle, da wir den Speicherort in der OPCache-Konfiguration frei definieren können. Dies ist zugleich auch der nächste Schritt. Öffnet die OPCache-Konfigurationsdatei mit einem Texteditor. (Auf meinem Server befindet sich die Konfiguration z.B. im Verzeichnis: /etc/php5/fpm/conf.d)
nano /etc/php5/fpm/conf.d/05-opcache.ini
Am Ende der Datei fügt ihr folgenden Paramter mit Pfadangabe zu eurer Blacklist-Datei ein:
opcache.blacklist_filename=/etc/php5/fpm/opcache-blacklist.txt
Das war es schon. Damit die Blacklist angezogen wird, sollte PHP noch einmal neugestartet werden. In meinem Fall, bei Verwendung von PHP-FPM, ist hierzu folgender Befehl nötig:
service php5-fpm restart
Wenn alles geklappt hat, sind nun sowohl das Developer-Verzeichnis als auch die dynamic_values.php-Datei vom OPCache ausgenommen. Bei Fragen, Kritik oder Ideen gilt wie immer – ab in die Kommentare damit. Viel Spaß beim Nachbauen!
I’m really loving the new Zune, and hope this, as well as the excellent reviews some other people have written, will help you decide if it’s the right choice for you.
Danke für die Mühe, die Sie gemacht haben, um das alles zusammenzutragen.
MfG Banyo