我有一个oracle数据库,其中存储了大量的生物识别数据,如HRV和ECG。我需要在excel表中为每个用户显示这些数据。但是这个数据非常大,即使对于单个用户,我们也获得了超过1,00,000条记录。目前有100~用户。
我在做的是:
当我获取所有用户的数据时,我使用phpexcel库来生成Excel工作表。
Excel工作表的结构
问题:
PHP需要1.5 GB的RAM并将数据存储在数组中并将其发送到与phpexcel交互的函数,但这个库需要3-4个小时然后我会收到“致命:内存限制”错误。我的系统只有2 GB RAM。
我应采取哪些步骤来优化我的代码以处理此大小的数据并以excel格式显示相同的信息,或者我需要增加RAM?
答案 0 :(得分:7)
考虑仅使用PHP来启动某种包含结果数据的Excel可读分隔文件(CSV)。 (这个想法是你不会通过PHP写入Excel - 因为你遇到的限制)。
你可以通过类似Powershell的东西请求php生成的文件,然后让Powershell或其他脚本选择将csv文件直接打开到Excel中,然后保存为xlsx。
或者您可以让命令行php执行'系统'调用并执行脚本步骤,将csv直接打开到Excel中,然后将其保存为xlsx。
答案 1 :(得分:2)
如果单个用户数据很大,那么您使用这么多内存来保存这些数据,请尝试以批处理模式在Excel中编写它。它会节省你的内存使用量。