Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam PHP Tanpa Keletihan Memori?

Bagaimanakah Saya Boleh Memproses Fail JSON Besar dengan Cekap dalam PHP Tanpa Keletihan Memori?

Linda Hamilton
Linda Hamiltonasal
2024-12-16 11:38:17283semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn