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!