使用php将大量数据写入Excel而不会出现内存限制错误

tec*_*ani 7 php memory export-to-excel

我有一个oracle数据库,其中存储了大量的生物识别数据,如HRV和ECG.我需要在excel表中为每个用户显示这些数据.但是这个数据是如此之大,即使对于单个用户,我们也获得了超过1,00,000条记录.目前有100~用户.

我在做的是:

  1. 我使用命令行执行CRON作业,这是我在Zend框架中开发的.
  2. 我确保这个CRON没有重叠.
  3. 我逐个从oracle数据库中获取每个用户的所有数据,然后将其存储在一个数组中.
  4. 当我获得所有用户的数据时,我使用phpexcel库来生成excel表.

    Excel工作表的结构

    • uid 1/uid/2 uid/3 ----------- nth
    • 数据|数据|数据|
    • 数据|数据|数据|
    • |
    • 第n

问题:

PHP需要1.5 GB的RAM并将数据存储在数组中并将其发送到与phpexcel交互的函数,但这个库需要3-4个小时,然后我得到"致命:内存限制"错误.我的系统只有2 GB RAM.

我应该采取哪些步骤来优化我的代码来处理这种大小的数据并以excel格式显示相同的信息,或者我需要增加RAM?

DWr*_*ght 7

考虑仅使用PHP来启动某种包含结果数据的Excel可读分隔文件(CSV).(这个想法是你不会通过PHP写入Excel - 因为你遇到的限制).

你可以通过类似Powershell的东西请求php生成的文件,然后让Powershell或其他脚本选择将csv文件直接打开到Excel中,然后保存为xlsx.

或者您可以让命令行php执行"系统"调用并执行脚本步骤,将csv直接打开到Excel中,然后将其保存为xlsx.