Speicherverbrauch in PHPExcel
Trotz der scheinbar großen Dateigröße der XSLX-Tabelle (3 MB) kann PHPExcel sie aufgrund von nicht laden unzureichender Speicher. Dieses Problem ergibt sich aus der „im Speicher“-Darstellung, die PHPExcel für Tabellenkalkulationsdaten verwendet, wodurch es anfällig für PHP-Speicherbeschränkungen ist.
Faktoren, die die Speichernutzung beeinflussen
Die physische Dateigröße ist im Vergleich zur Anzahl der Zellen (Zeilen x Spalten) in der Tabelle irrelevant. Als Faustregel gilt, dass pro Zelle etwa 1 KB Speicher erforderlich ist. Eine 5-M-Zellen-Arbeitsmappe würde also etwa 5 GB Speicher erfordern.
Techniken zur Speicheroptimierung
Um die Speichernutzung zu optimieren, können mehrere Techniken eingesetzt werden:
1. Arbeitsblätter einschränken:
Wenn mehrere Arbeitsblätter vorhanden sind, aber nicht alle benötigt werden, verwenden Sie die Methode setLoadSheetsOnly(), um anzugeben, welche Arbeitsblätter geladen werden sollen.
2. Verwenden von Lesefiltern:
Definieren Sie eine Lesefilterklasse, die PHPExcel_Reader_IReadFilter implementiert, um nur die spezifischen Zellen von Interesse zu lesen und so den Speicherbedarf zu reduzieren.
3. Blocklesen:
Lesen Sie die Arbeitsmappe in „Blöcken“, sodass mithilfe von Lesefiltern jeweils nur ein einzelner Block in den Speicher geladen wird.
4. ReadDataOnly festlegen:
Aktivieren Sie diese Option, um nur Zellwerte zu laden und Formatierungsinformationen zu ignorieren, was den Speicherverbrauch erheblich reduzieren kann.
5. Zell-Caching:
Speichern Sie Zellobjekte in einem komprimierten Format oder außerhalb des PHP-Speichers, um den pro Zelle benötigten Speicher zu minimieren.
Potenzielles Problem im Code
Zusätzlich zu diesen Optimierungstechniken ist die Verwendung von Iteratoren in Ihrem Code erwähnenswert, die weniger effizient sein können. Erwägen Sie stattdessen die Verwendung der von PHPExcel bereitgestellten Methoden toArray() oder rangeToArray(), um Arrays von Zelldaten zu erhalten.
Das obige ist der detaillierte Inhalt vonWie kann ich die Speichernutzung von PHPExcel beim Laden großer XLSX-Dateien optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!