解决PHPExcel导出大数据提示out memory错误

来源:互联网 发布:淘宝专柜代购有真的吗 编辑:程序博客网 时间:2024/06/05 04:20

问题描述:

错误提示:Fatal error: Allowed memory size of 134217728 bytes exhausted


问题原因:

1. php.ini文件中memory_limit值设置太小,php脚本执行所需要的内存不够

2. excel表格一个工作薄最多支持65535行数据量,要导出到一个工作薄的数据量超过65535行


解决方法:

1. 

修改php.ini文件中memory_limit值的大小

memory_limit=128M;可以设置合适的内存限制大小

memory_limit=-1    ;取消内存限制

        或者在php代码中增加:  ini_set(“memory_limit”, "-1");

2.   如果导出数据量超过65535行, 可以多创建几个工作薄,平分数据量让每个工作薄存储数据都不超过65535行


优化操作:

通过PHPExcel_Settings::setCacheStorageMethod方法更改缓冲方式来减小内存的使用

PHPExcel提示的缓冲方式有:

将数据缓冲到内存中,默认设置:PHPExcel_CachedObjectStorageFactory::cache_in_memory

将数据序列化缓冲到内存中:PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized

将数据序列化再进行Gzip压缩再放到内存中:PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip

将数据缓冲到磁盘临时文件中:PHPExcel_CachedObjectStorageFactory::cache_to_discISAM

将数据缓冲到php://temp:PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp

将数据缓冲到Memcache中:PHPExcel_CachedObjectStorageFactory::cache_to_memcache

将数据缓冲到SQLite3中:PHPExcel_CachedObjectStorageFactory::cache_to_sqlite3




0 0
原创粉丝点击