我正在我的报告网站中的表格上使用 DataTables 服务器端处理。我还使用 PHPExcel 将报告导出到 Excel。我创建用于在浏览器中查看的表格的 php 脚本工作正常,但是当我尝试让 PHPExcel 脚本工作时,我得到一个内存不足错误,例如:
我可以看到它在同一个地方出错,并且出现同样的错误,就像我试图处理客户端报告时一样。这就是为什么我试图在服务器上做这件事。我四处寻找,但我没有看到任何关于这种情况的信息。
有什么想法我可以尝试吗?
编辑
当我将内存增加到 512 时,我得到了同样的错误,但在不同的地方:
编辑 2
这不是重复下面提到的问题。我知道我的服务器具有所需的内存,它在将数据呈现给浏览器时使用它。只有当我将相同的数据发送到 PHPExcel 文件时,我才会遇到这个问题。有人提到尝试使用单元缓存,但我不知道 PHPExcel 是什么。这是我第一次尝试使用它。我什至尝试将发送的行数减少到 11 而不是 12,000+,但我仍然收到错误。
更新
经过多次测试,我想我现在知道一些问题所在。
填充浏览器屏幕的初始绘制只是拉回屏幕所需的内容,从 25 开始到 150。当我尝试导出时,它试图拉出所有内容。我目前拥有的最大报告是 65000+ 行和 35 列,尽管我还有更大的报告即将发布。我更新了内存限制,ini_set('memory_limit', '-1');
以便它可以使用它需要的任何东西,并且确实如此。
现在它在 300 秒(5 分钟)后超时。我尝试用 修复此问题ini_set('MAX_EXECUTION_TIME', 10);
,但这似乎没有做任何事情(我可能设置错误会对此进行更多研究)。
现在虽然我需要找到 PHPExcel 库的哪种缓存方法最有效。我目前正在使用cache_in_memory_gzip
,但我也在测试其他人,因为我读到了它们,它们看起来可能更好。完成测试后,我将进行另一次更新或回答问题。