Speicher erschöpft Fehler für json_parse mit PHP

Ich habe den folgenden code:

<?php
$FILE="giant-data-barf.txt";

$fp = fopen($FILE,'r');

//read everything into data
$data = fread($fp, filesize($FILE));
fclose($fp);

$data_arr = json_decode($data);
var_dump($data_arr);
?>

Die Datei giant-data-barf.txt ist, wie der name schon sagt, eine riesige Datei(5,4 mb, gerade jetzt, aber es könnte gehen bis zu mehreren GB)

Wenn ich das Skript, bekomme ich die folgende Fehlermeldung:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes) in ........./data.php on line 12

Schaute ich auf mögliche Lösungen, und sah dies:

ini_set('memory_limit','16M');

und meine Frage ist, gibt es ein limit, wie groß sollte ich mein Gedächtnis? Oder gibt es eine bessere Möglichkeit, dieses problem zu lösen?

  • Dies kann nicht ein job von PHP ist perfekt geeignet für. Können Sie Befehlszeilen-tools?
  • flat-file-Speicher von einer Datei, die Größe zu führen, dass Sie viele Probleme. Verwenden von sqlite oder mysql. wenn die Datei enthält nur eine variable, die wurde json codiert und es ist, dass riesige, es ist unwahrscheinlich, dass Sie werde in der Lage sein, diese zu lösen. json ist nicht dazu gedacht, für so große Dateien. Verwenden Sie eine Datenbank oder speichern Sie Sie in CSV, oder speichern Sie jede Zeile in der json anstatt die ganze Sache
  • Das problem ist nur, jemanden exportieren ist mir die gesamte DB im JSON-format...
  • Wie etwa JSON-streaming-parser? github.com/salsify/jsonstreamingparser
InformationsquelleAutor Tony Stark | 2011-02-08
Schreibe einen Kommentar