PHP - Sicherheit - Performance - Funktion - Trick

Ein Cache ist ein probates Mittel um die Performance einer Applikation zu steigern, dabei werden Caches nicht nur auf Softwareebene eingesetzt, sondern können auch direkt in der Hardware implementiert sein. Der Cache eines Prozessors zum Beispiel hilft, die Anzahl der Hauptspeicherzugriffe zu verringern. In größeren Webanwendungen sind vor allem Datenbankzugriffe ressourcenlastig und ein Kandidat, um einen Cache zu verwenden. In diesem Artikel geht es nun darum einen solchen kleinen Cache in PHP zu erstellen.

save_cache() und load_cache()

Der Cache wird aus nur 2 Funktionen bestehen, natürlich könnte man auch eine komplexere Klasse erstellen, aber dafür gibt es bereits erprobte Lösungen (z.B. Zend Cache). Die Funktion save_cache() ist, wie der Name schon vermuten lässt, für das Speichern zuständig. Bevor wir loslegen können müssen wir uns noch überlegen, wie und was der Cache eigentlich speichern soll. Fertige HTML Seiten oder gar einzelne Objekte ? Um ganze Objekte zu speichern, muss man sich überlegen, wie man ein Objekt so serialisiert, damit man es auf der Festplatte speichern kann und später wieder richtig interpretiert.

Zum Glück hat dieses Problem PHP bereits gelöst, mit den Funktionen serialize() und unserialize() können Objekte als String dargestellt werden.
Die Funktion um den Cache anzulegen sieht dann folgendermaßen aus

function save_cache($data, $key) {
		$key = md5($key);
		$data = serialize($data);
		file_put_contents('ORDNER/cache_data/'.$key, $data);
}

Um auf die gecached’te Datei wiederzugreifen zu können, erhält sie einen eindeutigen Schlüssel.
Mit dieser 3 – zeiligen Funktion ist es bereits möglich, praktisch jedes Objekt serialisiert auf der Festplatte zu speichern.

// Zu cachende Objekt
$array = array('name' => 'm0d', 'Homepage' => 'http://staticfloat.com');
// Cache anlegen
save_cache($array, 'meinArray');

load_cache()

Natürlich nützt der Cache bisher noch nicht viel, da wir noch keine Daten aus ihm laden können. Der Cache soll natürlich auch nicht ewig gültig sein, sondern nur eine bestimmte Zeitspanne.

function load_cache($key, $expire) {
		$key = md5($key);
		$path = 'cache_data/'.$key;
		if(time() < (filemtime($path) + $expire)) {
			return unserialize(file_get_contents($path));
		}
		unlink($path);
		return false;
}

Die Funktion erhält 2 Parameter, der erste ist der Schlüssel unter dem der Cache angelegt wurde. Der zweite Parameter $expire, ist ein Wert in Sekunden, der festlegt wie lange die Cachedatei gültig ist. Dabei wird ab dem Zeitpunkt des Erstellens der Datei gerechnet. Ein Wert von $expire = 300 würde nur einen Cache Hit zurückliefern, wenn die Datei weniger als 5 Minuten alt ist.

Beispiel

$data = load_cache(‘meinArray’, 300);

In der Variable $data wäre nun wieder der Array von oben gespeichert.

Achtung

In beiden Funktionen wird keine Überprüfung durchgeführt, ob die entsprechenden Dateien überhaupt existieren!

Weitere interessante Artikel:

»Kommentare

7 Kommentare zu “Simplen Cache mit PHP erstellen”

Die E-Mail-Adresse wird nicht veröffentlicht. Felder mit * müssen ausgefüllt werden

*

Syntaxhighlighting:
Um Syntaxhighlighting in den Kommentaren zu verwenden, einfach auf die entsprechende Sprache klicken und den Code in die <pre> Tags einfügen.

Folgende HTML Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">