1
我在使用Laravel 4.2中的PHPExcel生成報表時遇到問題,從數據庫中獲取的行數非常大(超過50萬行),因此創建的數組使用了大量的PHP內存和最終文件的生成結束導致內存溢出。我試圖使用PHPExcel緩存系統,但它也使用了很多系統內存。有沒有其他解決方案可能會使用?我想過以部分方式處理記錄的創建,例如一次處理5千行,但我不知道這些努力是否能解決我的問題。在Laravel 4.2中使用PHPExcel生成報表的解決方案
public function __construct() {
$templateFileName = $this->getTemplateFileName();
$fullPathTemplate = public_path().'/Temp/'.$templateFileName.'.xlsx';
// $cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheMethod = \PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;
$cacheSettings = array(
// 'memoryCacheSize' => '150MB'
'dir' => 'public/Temp/cache'
);
$cacheAtivo = \PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
if (! $cacheAtivo) {
die($cacheMethod . " Cache invalido " . EOL);
}
$objPhpReader = new \PHPExcel_Reader_Excel2007();
$this->phpExcelObject = $objPhpReader->load($fullPathTemplate);
}
預先感謝您爲大家的關注:我用用PHPExcel緩存(discISAM)
代碼。