天天看點

phpExcel導出檔案時記憶體溢出的問題

在使用PHPExcel導出檔案時,經常會因為檔案過大導緻PHP記憶體溢出報錯,為了解決這個問題,可以使用PHPExcel提供的參數進行優化。這裡說的Excel檔案過大并不一定是檔案大小,更關鍵的在于檔案記憶體放的資料和格式,如果資料很多,格式又比較豐富,那很容易會将PHP的記憶體耗盡。

資料2中指出,Excel中一個單元格在不啟用緩存的情況下大概占用記憶體是1K,一個8000行、31列的表格(248000個單元格)需要242MB記憶體。如果啟用緩存,則會降到80MB,效果還是非常明顯的。

使用中需要注意,PHPExcel的記憶體優化參數并不在PHPExcel對象中,需要在PHPExcel執行個體化之前設定。

如果不需要讀取Excel單元格格式,可以設定為隻讀取資料。

如果Excel中有多個Sheet,但是我們隻需要讀取其中幾個,為了減少記憶體消耗,也可以設定。

如果隻需要讀取Sheet中一定區域,也可以設定過濾器。

參考資料: