0

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

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

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


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

4

2 回答 2

3

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

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

如果需要,不要害怕增加内存使用量,这可以解决问题,有时购买内存是最便宜的选择。并且不要让 1 GB 吓到您,对于这样一个简单的任务来说已经很多了,但是如果您有足够的内存并且这就是您需要做的一切,那么它就足够了。

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

于 2012-09-17T22:11:36.010 回答
1

Instead of inserting one a time in a loop. Insert 100 row at a time.

You can always run

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

This way number of network transaction will reduce thus reducing resource usage.

于 2012-09-18T11:53:07.270 回答