Seit Tagen, ach was Wochen, versuche ich nun mich für ein passendes Framework zu entscheiden welches die neue Basis für Beatelic.De bieten soll. Im Open Source PHP-Bereich gibt es natürlich unzählige Frameworks, daraus das persönlich passende zu finden ist gar nicht so einfach. Ich habe meinen Blick auf zwei bekannte beschränkt, sowie einer komplett selbstgeschriebenen Entwicklung. Das „Zend“- und „Cake“-Framework. Im Laufe der Recherche ist dann aber auch noch „Codeigniter“ hinzugekommen.
Cake-Framework
Dieses hat mich besonders beeindruckt. Es bietet eine große Anzahl von Hilfsmitteln zur schnellen Entwicklung der notwendigsten CRUD (Create, Read, Update, Delete) Funktionen. Schnell habe ich es erreicht dass der Controller für „Locations“ alles konnte. Sogar ein wenig AJAX ging auf die Schnelle einzubauen. Der Code blieb immer sehr sauber und dank den fertigen Werteüberprüfungen konnte ich mir viel Eigenarbeit sparen. Erschreckend war aber, welche Mengen an SQL Statements abgerufen werden bei einer „Object->find(‚all‘)“ Abfrage, etwas zu viel in meinen Augen. Das Anpassen der Statements fand ich auch etwas krampfhaft und durch schlechte Dokumentation auch nicht immer leicht nachzuvollziehen.

Zend-Framework
Ok, dieses erstmal zum Laufen zu bekommen ist dann etwas schwieriger gewesen. Mit Hilfe der Beispielanwendung konnte ich auch schnell alles für mein „Location“ Objekt umschreiben. Trotzdem musste ich feststellen, dass eine Menge an Code noch aus eigener Hand kommen muss. Und Gewöhnungsbedürftig ist es auch ganz schön.

Codeigniter
In vielen Blogeinträgen wurde immer dieses Framework erwähnt, als die Specialvariante. Nun gut, man könnte es sich ja mal anschauen. Gesagt, getan. Auf den ersten Blick schien es auch alle notwendigen Funktionen zu bieten. Beeindruckte aber vielmehr durch die Performance. Code mäßig gibt es die eine oder andere Zeile, welche man mehr schreiben muss als bei Cake, aber die Sinn machen, und dadurch Optionen zu einer größeren Freiheit im Programmieren bieten.

Eigenes Framework
Hier ist natürlich eine Menge Grundarbeit zu erledigen. Alle notwendigen MVC-Funktionen, die Datenbankverarbeitung, Sicherheit und Eingabekontrollen. Benutzerverwaltung und Rechte für Gruppen. Trotz der „etwas“ größeren Schreibarbeit konnte ich viele der Funktionen bieten, welche auch die großen Brüder haben. Leider bin ich mir dabei nie so richtig sicher auch an alle Sicherheitsaspekte gedacht zu haben. Die Leute da draußen sind ja doch recht kreativ im Hacken von Webseiten geworden. Ein Vorteil war aber da, in der Performance konnte keiner das Wasser reichen.

Der Vergleich
Lauter hin und her, so richtig sicher bin ich immer noch nicht. Aber da ich in noch geraumer Zeit auf billige Webserver angewiesen sein werde ist das alles entschiedenste Kriterium dann doch die Performance. Getestet habe ich alle Systeme mit Apache Benchmark ab (immer 100 Aufrufe hintereinander). Cake hat auf meinem Testserver (mit eAccelerator) schon langsam gearbeitet, aber auf dem Webserver noch schlechter. 1600ms ist der Durchschnitt für die einfache Loactions-Seite, manchmal dann aber auch runter bis 20s oder sogar Ausfälle. Trotz netter Funktionen schleppt das Framework einen großen Overhead mit. Sehr große Schwankungen.
Zend war schon flotter. 1000ms im guten Durchschnitt, ansonsten eigentlich auch bei 5s. Das liegt natürlich auch an meinem schlechten Webserver, aber dafür entwickeln wir das ganze ja auch.
Codeigniter hat dann mal etwas rausgerissen. Im Test kam ein Durchschnittswert von 250ms raus (lokaler Server normalerweiser sogar nur 20ms), welcher sich auch konstant durch alle Aufrufe durchgezogen hat. Das macht natürlich etwas her mit dem man arbeiten kann.
Nun der ICE unter den Frameworks, mein Eigenes. 130ms in fast allen Durchläufen. Aber das macht auch Sinn bei der geringen Menge an Code was dort durchlaufen wird.
Aber wenn wir schon einmal bei dem ganzen Testen sind, dachte ich mir es wäre doch gut auch das aktuelle beatelic.de/locations zu testen. Durchschnitt brachte das Drupal (Version 5) 800ms auf die Waage, was noch ein guter Wert ist. Oft muss man dort aber auch ca2000ms warten.
Und somit: The Winner is Codeigniter. Auf ein frohes Schaffen.
[...] größten und bekanntesten ist. Aber in für meine Ansprüche genau das richtige Darstelle. Einen Vergleich verschiedenener Frameworks gab es zum Anfang des [...]