当使用PhpExcel编写xls(xlsx)文件时,我遇到一些内存问题。我试图使用缓存,但在编写新文档时似乎不起作用。PHPExcel:写入期间无法使用缓存
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize' => '8MB'
);
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
的库更新到最新版本(V1.8.1)问题后已改善了一点,但还是我能够准备和出口只有8列和15000个文件 - 20000行(20000行与cache_in_memory_gzip
)而不增加内存限制。不幸的是,在我的情况下,这不是足够的解
缓存方法可能允许我提前准备更多条目,但在实际写入方法期间没有任何问题。
$file = new PHPExcel();
// Prepare data ...
$writer = PHPExcel_IOFactory::createWriter($file, 'Excel2007');
$writer->save($pathname); // More memory required
您是否在实例化新的PHPExcel对象之前启用缓存___? –
不要忘记,缓存不是完全消除内存限制的灵丹妙药;即使使用缓存,仍然存在一些内存开销,并且不同的缓存选项会有所不同,从而减少开销 –
我尽快设置缓存。缓存方法可能允许我提前准备更多条目,但在实际写入方法期间,没有什么关系。 出于测试目的,我不使用数据库中的数据,而是使用一些预先设置的虚拟数据和循环。当使用数据库中的数据进行测试时,我得到的结果基本相同(请注意,我使用5000行步骤进行测试)。 – Wolfer