解决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
- 上一篇: php计算当前时间到下个月的剩余天数
- 下一篇: php 将csv文件内容导入数据库时值为空的解决