Я попытался использовать различные методы кеширования в разделе 4.2.1 руководства PHPExcel.Самый низкий метод кэширования памяти для PHPExcel
сделал тест с 100к строк и вот результаты
gzip = time=50,memoryused=177734904
ser = time=34,memoryused=291654272
phptm= time=41,memoryused=325973456
isamm= time=39,memoryused=325972824
руководство говорит, что phptmp и isamm методы используют диск вместо памяти. Следовательно, они должны использовать наименьшую память, но, похоже, это было наоборот.
Вот код, который я использовал для теста:
$cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_gzip;
// $cacheMethod = PHPExcel_CachedObjectStorageFactory::cache_in_memory_serialized;
// $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
// $cacheSettings = array('memoryCacheSize' => '8MB');
// $cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_discISAM;
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
$xlsReader = PHPExcel_IOFactory::createReader($fileType);
$xlsReader->setReadDataOnly(true);
Любой человек может пролить свет на эту тайну?
Как правило, для серверов, которые не заботятся о времени выполнения, но имеют ограничения по памяти, вы бы рекомендовали использовать SQLite3 как лучший вариант? – Gonzalingui
Где SQLite3 является опцией, а память является проблемой (и медленная скорость выполнения не является проблемой), то да, я бы рекомендовал использовать кеширование SQLite3 –