2016-03-02 62 views
0

我正在使用zend 1和phpexcel。导出大数据问题

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

注意:当我使用的列13或小于13其工作正常,但是当我提高用于Excel列拿给我的连接被重置页面

我怎样才能解决这个问题,请大家帮忙我。

+0

通过查看你的日志开始,看看他们是否报告任何东西....但没有更多的信息,任何人都可以做的就是做野生猜测....最有可能的原因是超时和/或内存限制 –

+0

当我在显示错误,它显示我一个警告和很多通知 – Tarzan

回答

0

它在描述中没有明确说明,但我假设你正在获取Web请求,随时生成一个大的Excel文件,然后将该文件发送到等待的客户端。

有两个意见。

卸载重处理

一般来说,不建议做这种大规模的处理上飞了等待的客户端。最好将大文件生成转移到另一台服务器,然后提供一个链接到等待的客户端。

有两个原因:

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

  2. 如果您让网络服务器执行大规模的处理,那么其他网络访问者 - 即使是那些有小而简单的请求 - 也可能会受到单个进程耗尽资源的负面影响。

减少与高速缓存

当然,越野装载重型吊装到另一台服务器不会使记忆问题消失PHPExcel内存使用情况;它只是将问题转移到新服务器。

可能首先尝试PHPExcel的是使用它们的cell-caching functionality

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

如上所述,对于Web请求,作业可能会比客户愿意等待的时间更长,因此您可能会被迫将繁重的作业卸载到另一台服务器上。但至少缓存方法可以为服务请求提供一个无内存溢出的机会。