我遇到了同样的问题。您将需要分配足够的时间和内存限制。
我已经在 3 个不同的服务器上测试了我的解决方案,结果如下:
大约 5000 条记录(12 列)
阅读文件:
09:48:22 内存使用峰值:1.25 MB
读取数据:
09:48:31 内存使用峰值:54.5 MB
将数据索引到数组后:
09:48:35 内存使用峰值:68.5 MB
记录:4504
索引后,我增加了读取 22.000 条记录的内存和时间,达到 370.00MB
这是解决方案(假设代码序列中的其他所有内容都是正确的)
您在程序/函数中调用 PHPExcel 的位置:
ini_set("max_execution_time", 'time_limit'); //see manual
在此处进行所有初始化,以便所有对象都准备好,然后分配内存用于读取文件并将数据索引到程序内部结构中:
ini_set('memory_limit', '???'); //your memory limit as string
$excel = $excelReader->load($filePath);
"Memory usage: " . (memory_get_peak_usage(true) / 1024 / 1024) . " MB"
//do the rest of the structure!
一个好主意是通过某些类别的数据管理所有这些,这样您就不会遇到 400 MB - 容易出错!