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

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

Linda Hamilton
Lepaskan: 2024-12-14 15:00:17
asal
306 orang telah melayarinya

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

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan