Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich große JSON-Dateien in PHP effizient verarbeiten, ohne dass der Speicher erschöpft ist?

Wie kann ich große JSON-Dateien in PHP effizient verarbeiten, ohne dass der Speicher erschöpft ist?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 11:38:17226Durchsuche

How Can I Efficiently Process Large JSON Files in PHP Without Memory Exhaustion?

Effiziente Verarbeitung großer JSON-Dateien in PHP

Bei der Arbeit mit JSON-Dateien mit erheblicher Größe (bis zu 200 MB) wird die gesamte Datei eingelesen Speicher als PHP-Array wird unpraktisch. Ein effizienter Ansatz besteht darin, Streaming-JSON-Parsing-Techniken zu verwenden, um übermäßigen Speicherverbrauch zu vermeiden.

JsonReader: Ein Streaming-JSON-Pull-Parser für PHP

Die pcrov/JsonReader-Bibliothek bietet eine Streaming-JSON-Pull-Parser für PHP 7. Im Gegensatz zu ereignisbasierten Parsern bietet JsonReader eine einfache API, die es Entwicklern ermöglicht, sich entlang des JSON-Streams zu bewegen und Daten nach Bedarf abrufen. Dieser Ansatz ermöglicht eine bessere Kontrolle über den Parsing-Prozess und minimiert den Speicherverbrauch.

Beispiel: Objekte als ganze Einheiten lesen

$reader = new JsonReader();
$reader->open("data.json");

$reader->read(); // Outer array
$depth = $reader->depth();
$reader->read(); // First object

while ($reader->next() && $reader->depth() > $depth) {
    print_r($reader->value()); // Process each object
}

$reader->close();

Beispiel: Eigenschaften einzeln lesen

$reader->json($json);

while ($reader->read()) {
    if ($reader->name() !== null) {
        echo "{$reader->name()}: {$reader->value()}\n";
    }
}

$reader->close();

Beispiel: Eigenschaften mit Duplikat lesen Namen

$json = '[{"property":"value", "property2":"value2"}, {"foo":"foo", "foo":"bar"}]';

$reader = new JsonReader();
$reader->json($json);

while ($reader->read("foo")) {
    echo "{$reader->name()}: {$reader->value()}\n";
}

$reader->close();

Zusätzliche Optionen

Die Auswahl des optimalen JSON-Parsing-Ansatzes hängt von der Struktur der Datei und den Verarbeitungsanforderungen ab. JsonReader unterstützt auch das Lesen von Eigenschaften aus einer bestimmten Tiefe oder durch einen regulären Ausdruck und bietet so weitere Flexibilität für komplexe Datenstrukturen.

Das obige ist der detaillierte Inhalt vonWie kann ich große JSON-Dateien in PHP effizient verarbeiten, ohne dass der Speicher erschöpft ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn