Tutorial Amazon Web Services mit PHP – III – Caching von Funktionsaufrufen

Im vorherigen Teil haben wir eine XML von den AWS mit cURL geladen. Aber Was heißt eigentlich Funktionscaching, und wieso brauchen wir das? Ganz einfach: Eine Funktion wird aufgerufen, führt Berechnungen durch und gibt das Ergebnis zurück. Die Berechnungen können sehr einfach sein, aber auch sehr viel kosten. Würden wir zum Beispiel den Download des XML von den Amazon Web Services in eine Funktion verpacken und bei jedem Aufruf das XML neu laden, würde das sehr teuer werden. Stattdessen macht es mehr Sinn, das XML zu cachen. Es gibt nun viele verschiedene Möglichkeiten das XML zu cachen, und die wohl einfachste ist es, einen allgemeinen Ansatz zu verwenden, der ganze Funktionsaufrufe cached. Dies können wir zum Beispiel auch für Datenbankaufrufe verwenden.

Hierbei liegt die Tücke allerdings im Detail, denn ein Aufruf der eigentlichen Funktion mit verschiedenen Parametern wird in der Regel auch verschiedene Antworten liefern. Es gilt also nicht die Funktion global zu cachen, sondern auch die Parameter zu berücksichtigen. Gleiche Parameter liefern gleiche Ergebnisse, ändern sich die Parameter muss zum Beispiel in unserem Fall die XML neu geladen werden.

Wir könnten uns nun den Kopf zermartern über eine eigene Caching-Funktion, aber wieso soll man das Rad neu erfinden? Ich nehme in der Regel Cache_Lite aus der Pear (direkter Download). Cache_Lite ist ein Programmpaket das genau das macht was wir wollen, und für uns erstmal eine Blackbox darstellt: Es ist egal was es macht, Hauptsache es funktioniert :)

Voraussetzung ist natürlich, dass wir eine Funktion hätten, die eine XML bei den AWS abfragt, diese könnte zum Beispiel wie folgt aussehen:

Den Funktionsaufruf müssten wir nun cachen, dies geschieht mich Cache_Lite wie folgt:

Das war es schon ;) Den Rest der Arbeit übernimmt Cache_Lite. Das Beispiel ist natürlich recht einfach gestrickt, es verfügt über keine Fehlerbehandlung. Aber um eine Garbage Collection brauchen wir uns zumindest keine Sorgen machen, das übernimmt Cache_Lite selbstständig. Das Paket ist natürlich nicht nur für unseren XML-Abruf gut, sondern es lässt sich jede beliebige Funktion damit cachen. Es ist zum Beispiel bei aufwendigen Datenbankabfragen von Interesse.

Nachdem wir nun wissen, wie wir ein XML laden und dieses Cachen sollten wir uns als Nächstes um die Ausgabe der Daten sorgen machen. Und hier gilt stets die Prämisse: Content und Design werden strikt voneinander getrennt, aber dazu mehr im nächsten Teil des Kurses.

Ähnliche Beiträge

Quality Assurance für PHP Sebastian Bergmann (ja, der von phpUnit) hat in seinem Blog einen interessanten Beitrag über Quality Assurance Tools für PHP veröffentlicht. Im Einzel...
10 nützliche PHP Snippets PHP ist eine fast sinnvolle Programmiersprache bei der am Ende alles immer so endet, dass man die gleichen Aufgaben immer wieder erledigen muss. Insof...
Test-Driven Development mit PHP Mit phpUnit gibt es bereits seit Jahren eine Methode zur testgetriebenen Entwicklung in PHP. Gerade bei der agilen Software-Entwicklung ist diese Meth...
WebSockets mit PHP WebSockets ist eine jener Techniken, die die Web-Welt nachhaltig revolutionieren könnten, da so Client-Server-Anwendungen recht einfach und vor allem ...

Schreibe einen Kommentar