der Mansch: json_decode bläst Speicher auf

Hi,

ich kann leider hier keinen Code bzw. dessen Output posten, da gerade kein Serverzugang besteht. Entschuldigung vielmals.

Folgender Fall:

Ich lese von unserem Server mittels file_get_contents() sehr viele Json-Dateien ein (.json), die ich anschliessend mit json_decode in ein PHP-Objekt übertrage.

Dateigröße: ca 13mb
Speicher nach dem Öffnen mittels file_get_contents(): 15mb
Speicher nach json_decode: 180mb!!!

What the hell? Hat jemand mit dieser Funktion Erfahrung? Eine Verringerung der Verschachtelungstiefe hat keine Veränderung gebracht, ein Umwandeln in ein Array geht nicht, da ich das Objekt brauche.

Leider gibt es nun auch vereinzelte Dateien, die über 50mb groß sind, ein Dekodieren würde also meinen verfügbaren Speicher sprengen!

grüße
der Mansch

    1. Hallo,

      http://www.phpdevblog.net/2009/11/serialize-vs-var-export-vs-json-encode-memory-usage.html

      Gruß

      alles klar, kann man wohl nichts machen. Muss ich mir ein Workaround ausdenken.

      schönes WE
      de Mansch

  1. Tach.

    Ich lese von unserem Server mittels file_get_contents() sehr viele Json-Dateien ein (.json), die ich anschliessend mit json_decode in ein PHP-Objekt übertrage.

    Dateigröße: ca 13mb
    Speicher nach dem Öffnen mittels file_get_contents(): 15mb
    Speicher nach json_decode: 180mb!!!

    Was gibt denn Dein Wert von 180 MB Speicher an? Den maximalen (oder vielleicht durchschnittlichen) Speicher, den json_decode während der Decodierung belegt? Oder eher die Größe der Daten *nach* der Decodierung?

    --
    Always remember that you are unique. Just like everybody else.
    1. Hallo,

      Tach.

      Ich lese von unserem Server mittels file_get_contents() sehr viele Json-Dateien ein (.json), die ich anschliessend mit json_decode in ein PHP-Objekt übertrage.

      Dateigröße: ca 13mb
      Speicher nach dem Öffnen mittels file_get_contents(): 15mb
      Speicher nach json_decode: 180mb!!!

      Was gibt denn Dein Wert von 180 MB Speicher an? Den maximalen (oder vielleicht durchschnittlichen) Speicher, den json_decode während der Decodierung belegt? Oder eher die Größe der Daten *nach* der Decodierung?

      Und wie groß ist der File, wenn du die JSON-dekodierten Daten als serialisierte Daten abspeicherst?

      Gruß

      jobo