Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Saya Boleh Mengoptimumkan Penggunaan Memori PHPExcel Apabila Memuatkan Fail XLSX Besar?

Bagaimanakah Saya Boleh Mengoptimumkan Penggunaan Memori PHPExcel Apabila Memuatkan Fail XLSX Besar?

Susan Sarandon
Susan Sarandonasal
2024-11-25 11:13:10129semak imbas

How Can I Optimize PHPExcel's Memory Usage When Loading Large XLSX Files?

Penggunaan Memori dalam PHPExcel

Walaupun saiz fail yang kelihatan besar bagi jadual XSLX (3MB), PHPExcel tidak dapat memuatkannya kerana ingatan tidak mencukupi. Isu ini berpunca daripada perwakilan "dalam memori" yang digunakan PHPExcel untuk data hamparan, menjadikannya mudah terdedah kepada had memori PHP.

Faktor-Faktor Yang Mempengaruhi Penggunaan Memori

Saiz fail fizikal adalah tidak relevan berbanding dengan bilangan sel (baris x lajur) dalam hamparan. Sebagai peraturan, kira-kira 1k memori diperlukan setiap sel. Jadi, buku kerja sel 5M memerlukan kira-kira 5GB memori.

Teknik Pengoptimuman Memori

Untuk mengoptimumkan penggunaan memori, beberapa teknik boleh digunakan:

1. Mengehadkan Lembaran Kerja:

Jika berbilang lembaran kerja hadir tetapi tidak semua diperlukan, gunakan kaedah setLoadSheetsOnly() untuk menentukan lembaran kerja yang perlu dimuatkan.

2. Menggunakan Penapis Baca:

Tentukan kelas penapis baca yang melaksanakan PHPExcel_Reader_IReadFilter untuk membaca hanya sel tertentu yang diminati, mengurangkan jejak memori.

3. Bacaan Bongkah:

Baca buku kerja dalam "ketulan" supaya hanya satu ketulan dimuatkan ke dalam ingatan pada satu masa menggunakan penapis baca.

4. Tetapkan readDataOnly:

Dayakan pilihan ini untuk memuatkan nilai sel sahaja, mengabaikan maklumat pemformatan, yang boleh mengurangkan penggunaan memori dengan ketara.

5. Caching Sel:

Simpan objek sel dalam format termampat atau di luar memori PHP untuk meminimumkan memori yang diperlukan setiap sel.

Potensi Isu dalam Kod

Selain teknik pengoptimuman ini, perlu diperhatikan penggunaan iterator dalam kod anda, yang mungkin kurang cekap. Sebaliknya, pertimbangkan untuk menggunakan kaedah toArray() atau rangeToArray() yang disediakan oleh PHPExcel untuk mendapatkan tatasusunan data sel.

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