Bagaimanakah Saya Boleh Mengoptimumkan PHPExcel untuk Mengelakkan Keletihan Memori Apabila Memuatkan Fail XLSX Besar?

Susan Sarandon
Lepaskan: 2024-11-19 13:58:02
asal
468 orang telah melayarinya

How Can I Optimize PHPExcel to Prevent Memory Exhaustion When Loading Large XLSX Files?

PHPExcel Membebankan Memori Semasa Memuatkan Hamparan Besar

Walaupun mempunyai 1024MB RAM yang diperuntukkan, PHPExcel masih mengalami keletihan memori apabila memuatkan fail XSLX 3MB. Punca utama terletak pada proses intensif memori yang terlibat dalam mewakili hamparan besar.

Mengoptimumkan Penggunaan Memori PHPExcel

Untuk menangani isu ini, beberapa teknik pengoptimuman boleh digunakan:

Pemuatan Helaian Terpilih

Jika hanya lembaran kerja tertentu perlu dimuatkan, gunakan setLoadSheetsOnly() untuk mengehadkan bilangan helaian yang dibaca oleh pembaca.

$objReader->setLoadSheetsOnly([
    'Data Sheet #1',
    'Data Sheet #3'
]);
Salin selepas log masuk

Baca Penapis

Untuk mendapatkan semula sel atau baris tertentu sahaja, penapis baca boleh digunakan.

class MyReadFilter implements PHPExcel_Reader_IReadFilter {
    // ... implementation
}

$objReader->setReadFilter(new MyReadFilter());
Salin selepas log masuk

Chunking

Membaca hamparan besar dalam ketulan boleh meminimumkan jejak memori dengan hanya memuatkan sebahagian daripada data pada satu masa.

$chunkSize = 20;
$chunkFilter = new chunkReadFilter();

for ($startRow = 2; $startRow < 65536; $startRow += $chunkSize) {
    $chunkFilter->setRows($startRow, $chunkSize);
    $objPHPExcel = $objReader->load($inputFileName);
}
Salin selepas log masuk

Baca Data Sahaja

Menetapkan readDataOnly kepada benar memuatkan nilai sel sahaja tanpa memformat data, mengurangkan penggunaan memori.

$objReader->setReadDataOnly(true);
Salin selepas log masuk

Caching Sel

Caching sel menyimpan objek sel dalam format termampat, mengurangkan penggunaan memori dengan ketara tetapi mengorbankan kelajuan.

Kaedah Alternatif

Daripada menggunakan iterator dan membina tatasusunan secara manual, pertimbangkan untuk menggunakan kaedah toArray() atau rangeToArray() PHPExcel untuk cekap penjanaan tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan PHPExcel untuk Mengelakkan Keletihan Memori Apabila Memuatkan Fail XLSX Besar?. 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