导出大数据问题

时间:2016-03-02 11:56:30

标签: zend-framework phpexcel

我正在使用zend 1和phpexcel。

当我导出限制为15000的数据时,会生成其工作正常和excel但是当我将数据限制更改为18000时,它会显示我已重置连接页面。

注意:当我使用13或更少的列然后13它的工作正常但是当我增加excel的列时它会显示我的连接已重置页面

如何解决此问题,请帮助我。

1 个答案:

答案 0 :(得分:0)

在您的描述中没有明确说明,但我假设您正在获取Web请求,即时生成大型Excel文件,然后将其(包含正确的标题)发送给等待的客户端。

有两条评论浮现在脑海中。

卸载繁重的处理

一般来说,不建议对等待的客户端进行这种大规模处理。最好将大文件生成卸载到另一台服务器,然后提供指向等待客户端的链接。

这有两个原因:

  1. 客户正在等待。如果处理时间足够长,则客户端请求可能会超时。然后,服务器完成了大部分/全部工作,客户端甚至没有得到他的回复。

  2. 如果您让网络服务器进行大规模处理,那么其他网络访问者 - 即使是那些请求小而简单的访问者 - 也可能会因单个进程占用资源而对其性能产生负面影响。 / p>

  3. 通过缓存减少PHPExcel内存使用量

    当然,将重物卸载到另一台服务器并不会导致内存问题消失;它只是将问题转移到新服务器。

    尝试PHPExcel的第一件事可能就是使用他们的cell-caching functionality

    这允许不同的后端 - 文件系统,内存缓存,sqllite等 - 来模拟拥有更多内存。当然,这里的权衡是速度。使用外部模拟内存比使用服务器内实际内存要慢得多。但好处是这种记忆“有效”无限,所以你至少可以完成工作。

    如上所述,对于Web请求,作业可能仍然需要比客户端愿意等待的时间更长的时间,因此您可能被迫将繁重的工作卸载到另一台服务器。但至少缓存方法可以帮助您在没有内存溢出的情况下为请求提供服务。