Maison > développement back-end > tutoriel php > Comment puis-je traiter efficacement des fichiers JSON volumineux en PHP sans épuisement de la mémoire ?

Comment puis-je traiter efficacement des fichiers JSON volumineux en PHP sans épuisement de la mémoire ?

Linda Hamilton
Libérer: 2024-12-16 11:38:17
original
229 Les gens l'ont consulté

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

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();
Copier après la connexion

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();
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal