Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie Beispiele für die Lösung von PHPExcel-Speicherlecks

Teilen Sie Beispiele für die Lösung von PHPExcel-Speicherlecks

*文
*文Original
2017-12-25 13:52:451817Durchsuche

In diesem Artikel wird hauptsächlich die Lösung für das Speicherleckproblem von PHPExcel vorgestellt. In diesem Artikel werden zunächst die Gründe für den Speicherverlust erläutert. Anschließend können sich bedürftige Freunde auf

Verwenden Sie PHPExcel zum Generieren beziehen Excel-Dokumente verbrauchen mehr Speicher. Manchmal kann es notwendig sein, die großen Datenmengen durch eine Schleife in mehrere kleine Excel-Dokumente aufzuteilen, um sie zu speichern, um eine Speichererschöpfung zu vermeiden.
PHPExcel verfügt jedoch über Zirkelverweise (anscheinend wurde dieses Problem in der neuesten Version 1.6.5 nicht gelöst, wenn PHPExcel- und PHPExcel_Writer_Excel5-Objektinstanzen während einer http-Anfrage wiederholt erstellt werden, um mehrere Excel-Dokumente zu vervollständigen). Bei einem Generierungsvorgang können nicht alle erstellten Objektinstanzen rechtzeitig vor dem Ende der HTTP-Anforderung freigegeben werden, was zu einem Speicherverlust führt.
Die Lösung besteht darin, Methoden in der PHPExcel_Worksheet-Klasse hinzuzufügen:


 public function Destroy() {
     foreach($this->_cellCollection as $index => $dummy) {
         $this->_cellCollection[$index] = null;
     }
 }


und Methoden in der PHPExcel-Klasse hinzuzufügen:

 public function Destroy() {
     foreach($this->_workSheetCollection as $index => $dummy) {
         $this->_workSheetCollection[$index]->Destroy();
         $this->_workSheetCollection[$index] = null;
     }
 }


Dann rufen Sie explizit PHPExcel::Destroy() auf, wo Ressourcenrecycling erforderlich ist, um das Zirkelverweisproblem zu lösen. Beachten Sie, dass die Methode __destruct() nur aufgerufen wird, wenn das Objekt als zur Freigabe bereit gilt, sodass die Verarbeitung von Zirkelverweisen in __destruct() nicht erfolgen kann.

Verwandte Lektüre:

Thinkphp5+PHPExcel implementiert Batch-Upload-Tabellendaten function_php example

Einführung in die Methode zum Einfrieren und Sperren von Headern in PHPExcel

Freigabe der Methode zum Exportieren von Excel-Dateien durch PHPExcel im Yii2-Framework

Das obige ist der detaillierte Inhalt vonTeilen Sie Beispiele für die Lösung von PHPExcel-Speicherlecks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn