Traitement efficace de gros fichiers JSON en PHP
Lorsque vous travaillez avec des fichiers JSON de taille importante (jusqu'à 200 Mo), lire l'intégralité du fichier dans la mémoire sous forme de tableau PHP devient peu pratique. Une approche efficace consiste à utiliser des techniques d'analyse JSON en streaming pour éviter de consommer trop de mémoire.
JsonReader : un analyseur Pull JSON en streaming pour PHP
La bibliothèque pcrov/JsonReader offre un analyseur pull JSON en streaming pour PHP 7. Contrairement aux analyseurs basés sur des événements, JsonReader fournit une API simple qui permet aux développeurs de se déplacer dans le flux JSON et récupérer les données selon vos besoins. Cette approche accorde un meilleur contrôle sur le processus d'analyse et minimise la consommation de mémoire.
Exemple : Lecture d'objets sous forme d'unités entières
$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();
Exemple : Lecture des propriétés individuellement
$reader->json($json); while ($reader->read()) { if ($reader->name() !== null) { echo "{$reader->name()}: {$reader->value()}\n"; } } $reader->close();
Exemple : Lecture de propriétés avec duplicata Noms
$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();
Options supplémentaires
Le choix de l'approche d'analyse JSON optimale dépend de la structure du fichier et des exigences de traitement. JsonReader prend également en charge la lecture des propriétés à partir d'une profondeur donnée ou via une expression régulière, offrant ainsi une flexibilité supplémentaire pour les structures de données complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!