Wer lieber ein geschriebenes Tutorial vorzieht, findet nachfolgend einen kleinen Artikel, der genau auf dem im Video vorgestellen PHP Cache basiert.
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:
PHP-Code:
function save_cache($data, $key) {
$key = md5($key);
$data = serialize($data);
file_put_contents('ORDNER/cache_data/'.$key, $data);
}
Mit dieser 3 – zeiligen Funktion ist es bereits möglich, praktisch jedes Objekt serialisiert auf der Festplatte zu speichern.
PHP-Code:
// Zu cachende Objekt
$array = array('name' => 'm0d', 'Homepage' => 'http://staticfloat.com');
// Cache anlegen
save_cache($array, 'meinArray');
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.
PHP-Code:
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;
}
Beispiel
PHP-Code:
$data = load_cache(‘meinArray’, 300);
Achtung
In beiden Funktionen wird keine Überprüfung durchgeführt, ob die entsprechenden Dateien überhaupt existieren!



Bereiche
Kategorien
Forum - Programming

tutorials.de-Systemmitteilung