如何用PHP处理大量数据?

时间:2012-09-17 21:54:19

标签: php codeigniter phpexcel

我的Web应用程序允许用户导入excel文件并将文件中的数据写入mysql数据库。 问题是,当excel文件有很多条目,甚至1000行时,我得到一个错误,说PHP内存不足。读取文件时会发生这种情况。 我在php.ini文件中为PHP分配了1024MB。

我的问题是,如何在PHP中导入如此大的数据。

我正在使用CodeIgniter。 为了阅读excel文件,我正在使用this库。


解决。我使用CSV而不是xls。我可以在几秒钟内导入10,000行数据。 谢谢大家的帮助。

2 个答案:

答案 0 :(得分:3)

正如其他人所说,1000条记录并不多。确保一次处理一个记录,或者一次处理几个记录,并且在完成该行或者重复使用变量之后,每次迭代使用的变量超出范围。

如果您可以通过将excel文件导出到csv来避免处理excel文件的必要性,那就更大了,因此您不需要这样的库(可能会也可能没有自己的内存问题)。

如果您需要并且解决问题,不要害怕增加内存使用量,购买内存有时是最便宜的选择。并且不要让1 GB吓到你,这对于这么简单的任务来说是很重要的,但是如果你有记忆而这就是你需要做的所有事情,那么它现在已经足够好了。

另外,如果您使用旧版本的PHP,请尝试更新到PHP 5.4,它比其前辈更好地处理内存。

答案 1 :(得分:1)

而不是在循环中插入一次。一次插入100行。

您可以随时运行

INSERT INTO myTable (clo1, col2, col2) VALUES 
(val1, val2), (val3, val4), (val5, val6) ......

这样会减少网络事务的数量,从而减少资源的使用。