国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

phpExcel導出大量數據出現內存溢出錯誤解決辦法

2024-05-04 21:49:18
字體:
來源:轉載
供稿:網友

我們經常會使用phpExcel導入或導入xls文件,但是如果一次導出數據比較大就會出現內存溢出錯誤,下面我來總結解決辦法.

phpExcel將讀取的單元格信息保存在內存中,我們可以通過如下代碼:

PHPExcel_Settings::setCacheStorageMethod()

來設置不同的緩存方式,已達到降低內存消耗的目的.

1、將單元格數據序列化后保存在內存中,代碼如下:

PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;

2、將單元格序列化后再進行Gzip壓縮,然后保存在內存中,代碼如下:

PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;

3、緩存在臨時的磁盤文件中,速度可能會慢一些,代碼如下:

PHPExcel_CachedObjectStorageFactory::cache_to_discISAM;

4、保存在php://temp,代碼如下:

PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;

5、保存在memcache中

PHPExcel_CachedObjectStorageFactory::cache_to_memcache

舉例:

第4中方式,代碼如下:

  1. $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;   
  2. $cacheSettings = array' memoryCacheSize '  => '8MB'   
  3.                 );   
  4. PHPExcel_Settings::setCacheStorageMethod($cacheMethod$cacheSettings);  

第5種,代碼如下:

  1. $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;   
  2. $cacheSettings = array'memcacheServer'  => 'localhost',   
  3.                         'memcachePort'    => 11211,   
  4.                         'cacheTime'       => 600   
  5.                       );   
  6. PHPExcel_Settings::setCacheStorageMethod($cacheMethod$cacheSettings); 

其它的方法:

第一個方法,你可以考慮生成多個sheet的方式,不需要生成多個excel文件,根據你數據總量計算每個sheet導出多少行,下面是PHPExcel生成多個sheet方法.

下面是PHPExcel生成多個sheet方法,代碼如下:

  1. $sheet = $objPHPExcel->getActiveSheet();  
  2. $sheet->setCellValue('A1',$x);   
  3. $sheet->setCellValue('B1',$y); 

第二個方法,你可以考慮ajax來分批導出,不用每次刷新頁面,代碼如下:

  1. <a href="#" id="export">export to Excel</a>  
  2. $('#export').click(function() {   
  3.     $.ajax({   
  4.         url: "export.php",    
  5.         data: getData(),  //這個地方你也可以在php里獲取,一般讀數據庫   
  6.         success: function(response){   
  7.             window.location.href = response.url;   
  8.         }   
  9.     })   
  10.    
  11. }); 
  12.  
  13. <?php  
  14. //export.php  
  15. $data = $_POST['data']; 
  16. $xls = new PHPExcel();  
  17. $xls->loadData($formattedData); 
  18. $xls->exportToFile('excel.xls'); 
  19. //開源代碼Vevb.com 
  20. $response = array(  
  21. 'success' => true,  
  22. 'url' => $url  
  23. );  
  24.  
  25. header('Content-type: application/json');  
  26. echo json_encode($response);  
  27. ?> 

數據量很大的話,建議采用第二種方法,ajax來導出數據,上面方法簡單給了個流程,具體你自己補充.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沅江市| 西贡区| 铅山县| 昆山市| 漳州市| 黔江区| 平潭县| 和平区| 台南县| 十堰市| 新巴尔虎左旗| 城口县| 杂多县| 若羌县| 沙洋县| 七台河市| 大庆市| 仁布县| 灵石县| 永新县| 朝阳市| 仁化县| 西吉县| 长子县| 大足县| 攀枝花市| 木兰县| 资源县| 盐亭县| 勐海县| 莎车县| 崇左市| 青川县| 应城市| 海林市| 烟台市| 昆明市| 玉树县| 鹤庆县| 义马市| 卢湾区|