Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam PHP Tanpa Isu Memori?
Memproses Fail JSON Besar dalam PHP
Mengendalikan fail JSON yang banyak boleh menjadi satu cabaran, terutamanya apabila berurusan dengan fail yang berpotensi besar melebihi saiz 200M . Untuk menangani isu ini, adalah penting untuk mengelakkan memuatkan keseluruhan fail ke dalam memori. Sebaliknya, pendekatan penstriman disyorkan untuk memproses objek secara individu tanpa menimbal kandungan penuh.
Satu penyelesaian yang berkesan ialah menggunakan penghurai tarik JSON penstriman seperti pcrov/JsonReader untuk PHP 7. Penghurai ini mengikut pendekatan yang berbeza daripada peristiwa -penghurai berasaskan dengan membenarkan anda meminta data secara eksplisit dengan memanggil kaedah pada penghurai. Ini memberikan lebih fleksibiliti dan kawalan ke atas proses penghuraian.
Contoh 1: Membaca Objek Sebagai Seluruh Entiti
Contoh ini menunjukkan cara mengekstrak objek daripada fail JSON sebagai lengkap tatasusunan:
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();
Contoh 2: Membaca Individu Bernama Elemen
Untuk mengekstrak elemen tertentu daripada setiap objek, contoh ini menunjukkan:
$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();
Contoh 3: Menapis Sifat mengikut Nama
Contoh terakhir ini mempamerkan cara menapis sifat mengikut nama tertentu, walaupun nama pendua wujud dalam nama yang sama objek:
$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();
Pendekatan optimum untuk memproses fail JSON yang besar akan berbeza-beza bergantung pada struktur data dan operasi yang dimaksudkan. Walau bagaimanapun, dengan memanfaatkan penstriman penghurai JSON, pembangun boleh mengendalikan fail JSON yang besar dengan cekap tanpa menghadapi masalah memori.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam PHP Tanpa Isu Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!