Raketenbastler: PHP::serialize() - Zu hoher Speicherverbrauch - Alternativen?

Beitrag lesen

Hallo Felix,

nein gzipencode bringt leider nichts.

Ich hab mir die serialisierten Daten mal angesehen. Es müsste wohl etwas sein, was den Array quasi von innen nach außen direkt in eine mit fopen() geöffnete Datei wegschreibt und mit rewind(), fseek() und Schwestern den Dateizeiger hin- und hersetzt.

Grund: serialize() notiert Datentyp, Länge bei (Sub-)Arrays und bei Strings die Länge (in Bytes, nicht Zeichen) des jeweiligen Elements (und von dessen Kindern) vor demselben. Deshalb kann unserialize() mit ein wenig Zahlenzauberei wahlfrei auf die Daten zugreifen und so irre schnell sein. JSON tut das nicht, muss sequentiell durch die Daten gehen und ist deswegen beim Lesen langsamer.

Beim Erzeugen muss man halt anders herum, also von innen nach außen arbeiten. Und wenn der Speicher nicht reicht, dann muss man halt direkt in die Datei schreiben. Mal hinten, mal vorn…