7. November 2006: Serialisierte Instanzen

Abw├Ąrtskompatibilit├Ąt ist eine tolle Sache. Sie verspricht, dass man die Entwicklungen auf der momentanen Version auch in Zukunft noch nutzen kann und dadurch nicht laufend mit der Wartung seiner alten Programme besch├Ąftigt ist.

Was ich jedoch gestern erfahren musste, hat immer noch einen faden Beigeschmack. Es ging darum, dass eine Webseite mit komplexen adhoc-Berechnungen die zugrunde liegenden Instanzen eines Objektes in einer Datenbank-Tabelle zwischenspeichern sollte. Nichts leichter als das:

$so = serialize($o);

Das Zur├╝ckholen in den Applikationskontext zu einem sp├Ąteren Zeitpunkt ging ebenso leicht:

$o = unserialize($so);

In meiner Test-Umgebung (PHP 4.3.3) hat das alles wunderbar funktioniert. Toll, dachte ich, dass das so einfach geht. Doch zu fr├╝h gefreut. In der Produktiv-Umgebung (PHP 4.4.4) fehlten den so wieder ins Leben zur├╝ck gerufenen Instanzen auf einmal die Methoden, was neben unsch├Ânen Fehlermeldungen auch zu einem Ausfall der Anwendung gef├╝hrt hat. Laut PHP-Dokumentation soll man, um genau dies zu vermeiden, eine kleine Korrektur vornehmen:

$so = unserialize(implode("", $so));

Leider f├╝hrte auch das nicht zum gew├╝nschten Ergebnis. Blieb also nur der Biss in den sauren Apfel und ein entsprechend ausschweifender Work-Around (die Daten werden jetzt in einer eigenen Cache-Tabelle zwischengespeichert).