我使用phpexcel集成xlsx文件以便从数据库写入.我想在xlsx文件中写3,00,000条记录.但直到致命错误:内存不足(分配1979711488)(试图分配131072字节)
我的PHP版本5.3.28
另外我设置php ini和cell cache看下面我的代码
ini_set('max_execution_time',-1);
ini_set('memory_limit', '-1');
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_in_memory_gzip;
$cacheSettings = array( ' memoryCacheSize ' => '-1');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
我很期待你的回复.
谢谢
解决方法:
因为您正在尝试编写大量记录,所以即使您使用PHPExcel提供的缓存技术,您仍可能遇到OutOfMemory错误.或者你的脚本需要很长时间才能完成(太长时间无法接受).
如果这是你看到的事情,我建议你看看Spout:https://github.com/box/spout.它是PHPExcel的替代品,它是为了解决你的问题而创建的.您可以根据需要将其保存为多个记录,库可以在不需要任何额外配置的情况下编写它们.
编写XLSX文件很简单:
$writer = WriterFactory::create(Type::XLSX);
$writer->openToFile($filePath);
while (...) {
$writer->addRow($singleRow);
}
$writer->close();