• phpExcel大数据量情况下内存溢出解决


    版本:1.7.6+

    在不进行特殊设置的情况下,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

    $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_memcache;  
            $cacheSettings = array( 'memcacheServer'  => 'localhost',  
                            'memcachePort'    => 11211,  
                            'cacheTime'       => 600  
                          );  
            PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);

    注意是加在new PHPExcel() 前面:如下

    require_once APPPATH .'third_party/PHPExcel/PHPExcel.php';      
    $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
    $cacheSettings = array('memoryCacheSize'=>'16MB');
    PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
    $objPHPExcel = new PHPExcel();
  • 相关阅读:
    Java 面向对象(十二)类的成员 之 代码块
    Java 关键字:static
    Java 常用类(二):包装类(Wrapper)
    Java 之 clone 方法(对象拷贝)
    SQL分组聚合查询
    Rabbitmq消息持久化
    idea 插件
    TCP粘包,拆包及解决方法
    redis内存淘汰策略及如何配置
    MySQL存储过程/存储过程与自定义函数的区别
  • 原文地址:https://www.cnblogs.com/gide/p/4620007.html
Copyright © 2020-2023  润新知