Verarbeitung großer JSON-Dateien in PHP
Der Umgang mit umfangreichen JSON-Dateien kann eine Herausforderung sein, insbesondere wenn es um potenziell große Dateien mit einer Größe von mehr als 200 MB geht . Um dieses Problem zu beheben, ist es wichtig, das Laden der gesamten Datei in den Speicher zu vermeiden. Stattdessen wird ein Streaming-Ansatz empfohlen, um Objekte einzeln zu verarbeiten, ohne den gesamten Inhalt zu puffern.
Eine effektive Lösung ist die Verwendung eines Streaming-JSON-Pull-Parsers wie pcrov/JsonReader für PHP 7. Dieser Parser verfolgt einen anderen Ansatz als Event -basierte Parser, indem Sie die explizite Anforderung von Daten durch den Aufruf von Methoden auf dem Parser ermöglichen. Dies bietet mehr Flexibilität und Kontrolle über den Parsing-Prozess.
Beispiel 1: Objekte als ganze Entitäten lesen
Dieses Beispiel zeigt, wie Objekte vollständig aus der JSON-Datei extrahiert werden Arrays:
use pcrov\JsonReader\JsonReader; $reader = new JsonReader(); $reader->open("data.json"); $reader->read(); // Outer array. $depth = $reader->depth(); // Check in a moment to break when the array is done. $reader->read(); // Step to the first object. do { print_r($reader->value()); // Do your thing. } while ($reader->next() && $reader->depth() > $depth); // Read each sibling. $reader->close();
Beispiel 2: Lesen einer benannten Person Elemente
Um bestimmte Elemente aus jedem Objekt zu extrahieren, zeigt dieses Beispiel:
$reader = new pcrov\JsonReader\JsonReader(); $reader->open("data.json"); while ($reader->read()) { $name = $reader->name(); if ($name !== null) { echo "$name: {$reader->value()}\n"; } } $reader->close();
Beispiel 3: Eigenschaften nach Namen filtern
Dieses letzte Beispiel zeigt, wie Eigenschaften nach einem bestimmten Namen gefiltert werden, auch wenn darin doppelte Namen vorhanden sind Objekt:
$json = <<<JSON [ {"property":"value", "property2":"value2"}, {"foo":"foo", "foo":"bar"}, {"prop":"val"}, {"foo":"baz"}, {"foo":"quux"} ] JSON; $reader = new pcrov\JsonReader\JsonReader(); $reader->json($json); while ($reader->read("foo")) { echo "{$reader->name()}: {$reader->value()}\n"; } $reader->close();
Der optimale Ansatz für die Verarbeitung großer JSON-Dateien hängt von der Struktur der Daten und den beabsichtigten Vorgängen ab. Durch die Nutzung von Streaming-JSON-Parsern können Entwickler jedoch umfangreiche JSON-Dateien effizient verarbeiten, ohne auf Speicherprobleme zu stoßen.
Das obige ist der detaillierte Inhalt vonWie kann ich große JSON-Dateien in PHP effizient und ohne Speicherprobleme verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!