Memproses Fail JSON Besar dengan Cekap dalam PHP
Apabila bekerja dengan fail JSON bersaiz ketara (sehingga 200MB), baca keseluruhan fail ke dalam memori sebagai tatasusunan PHP menjadi tidak praktikal. Pendekatan yang cekap ialah menggunakan teknik penghuraian JSON penstriman untuk mengelakkan penggunaan memori yang berlebihan.
JsonReader: A Streaming JSON Pull Parser untuk PHP
Pustaka pcrov/JsonReader menawarkan penstriman JSON pull parser untuk PHP 7. Tidak seperti parser berasaskan acara, JsonReader menyediakan API mudah yang membolehkan pembangun bergerak sepanjang aliran JSON dan mendapatkan semula data seperti yang diperlukan. Pendekatan ini memberikan kawalan yang lebih besar ke atas proses penghuraian dan meminimumkan penggunaan memori.
Contoh: Membaca Objek Sebagai Unit Keseluruhan
$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();
Contoh: Sifat Membaca Secara Individu
$reader->json($json); while ($reader->read()) { if ($reader->name() !== null) { echo "{$reader->name()}: {$reader->value()}\n"; } } $reader->close();
Contoh: Membaca Sifat dengan Nama Pendua
$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();
Pilihan Tambahan
Memilih pendekatan penghuraian JSON yang optimum bergantung pada struktur fail dan keperluan pemprosesan. JsonReader juga menyokong sifat bacaan dari kedalaman tertentu atau dengan ungkapan biasa, memberikan fleksibiliti lanjut untuk struktur data yang kompleks.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam PHP Tanpa Keletihan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!