Montag, 17. Dezember 2007

Roxanne bekommt Flügel

Kurz nach dem Release von Rails 2.0 kommt nun auch der neuste Release von Roxanne. In dieser neuen Version stand vorallem die Performance im Vordergrund:

Erstens wurde ActsAsTree durch ActsAsNestedSet ersetzt, genauer gesagt mit BetterNestedSet. Damit können nun ganze Content-Hierarchien mit einem Query geladen werden. Zum Vergleich, eine Seite mit etwa 250 editierbaren Elementen brauchte auf einem G4 1.42 GHz MiniMac im development Modus etwas über 9 sec (gähn!), im productive Modus etwa 3 sec. Jetzt braucht die gleiche Seite im development 6.5 sec, noch nicht gerade berauschend, aber im productive Modus nur noch 0.7 sec.

Zweitens setzt Roxanne nun auch Caching ein. Solange man auf der Site nicht eingeloggt ist, werden die Seiten direkt aus dem Cache geliefert. Das dauert dann gerade noch 0.0015 sec ;-) Und nicht zuletzt ist nun Roxanne auch Rails 2.0 ready.

Sonntag, 16. Dezember 2007

PHP weigert sich zu iterieren

Der Provider eines unserer Kunden hat sein PHP auf Version 5.2.3 upgedated und plötzlich erschien nur noch eine weisse Seite. Nach stundenlangem Suchen konnte die Fehlerquelle bei einem each ausfindig gemacht werden:
while (list($item, $data) = each($this->getValue($idTitle)))

Es fand schlicht keine Iteration mehr statt, der while blieb immer auf dem ersten Eintrag und erzeugte damit eine Endlosschlaufe. Sobald der Returnvalue des ersten Aufrufs in eine extra Variable gepackt wurde, funktionierte der each wieder:
$subs = $this->getValue($idTitle);
while (list($item, $data) = each($subs))

Ähnliche Probleme mit Returnvalues einer Instanzmethode sind schon bei früheren PHP Versionen immer wieder aufgetaucht. Es erstaunt doch etwas, dass man noch immer an solch tiefliegenden Mechanismen rumbastelt.