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

问题描述:

错误提示: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




©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值