如何处理php中的大数据?

时间:2015-01-16 02:04:25

标签: .htaccess phpexcel execution-time memory-limit

我有一个很大的数据组合,当我使用php excel生成一个excel文件时,页面将挂起并且excel文件不会生成。我将要做的?我已经增加了内存时间,执行时间,但仍然是同样的问题,我也尝试过在缓冲方法中使用ob_start,ob_flush,ob_end_flush等,但仍然存在同样的问题。

我有超过100个关键字,500个类别,8000个位置意味着有100 * 500 * 8000种组合。当我们生成excel时,不支持内存执行,页面显示为空白。

我已经使用GB中的.htaccess增加了内存时间,但问题仍然存在。

感谢。

2 个答案:

答案 0 :(得分:1)

根据你的组合 100 * 500 * 8000 = 400000000

您将拥有400000000条记录,我们永远不会将这么多行存储到单个xls文件中。 我们的xls工作表大小是65,536行乘256列

http://office.microsoft.com/en-in/excel-help/excel-specifications-and-limits-HP005199291.aspx

首先,我们必须计算可以存储此数据的文件数量,如果我们可以在单张纸上保存65,536行,那么在三张纸中我们可以节省多达65,536 * 3 = 196608条数据记录。这意味着在目前的情况下你必须创建至少400000000/196608 = 2034.5意味着我们必须创建2035个文件来在xls文件中存储这么多数据,这样你就可以通过ajax触发这个脚本并且可以通过ajax获取创建的文件并且这个ajax调用将发生2035次(你可以通过在单个ajax调用上处理至少五个文件的文件数来减少这个,所以这个ajax将在完成时返回5个文件链接,你将不得不调用这个ajax 407次而不是2035)并且以这种方式你将永远不会得到内存错误和执行时间错误(请尝试修复执行时间最大值和内存限制最大值以使其稳健)。

因此,您可以通过这种方式完成任务。

答案 1 :(得分:0)

解决该问题的另一种方法是在同一文件中创建多个工作表。在您的情况下,这将创建大量的工作表...我不认为这将是一个相关的报告。

否则,您可以转到XLSX。此格式的大小限制为每张1,048,576行,因此您最终会创建更少的内容。有一些图书馆可以帮助你做到这一点。