2012-01-03 52 views
0

我遇到包含真正大文件的问题,所以使用了ini_set('memory_limit', '-1'); 但仍不能包含超过1GB的文件。我该怎么办?PHP包含大文件 - 内存问题

+6

你想包含哪一种文件超过1GB?这是一种大阵列吗?你有没有考虑过尝试读取数据块? – JohnP 2012-01-03 15:52:53

+0

你应该做的是不包括1GB大小的文件。我甚至不会问为什么,从一英里远的地方就可以看到你的应用程序的体系结构出了问题。 – 2012-01-03 16:11:47

+0

我的脚本为用户生成产品供稿。它会查看一个.txt文件是否存在,如果存在,它会包含该文件,如果它不生成该文件。有时文件很大,取决于用户有多少产品。 – LeeTee 2012-01-03 16:34:02

回答

3

您将不得不重新考虑您的架构; PHP的include函数没有被设计来处理这样的大文件;它被设计成包含并评估一个PHP代码文件。在不知道文件实际存在的数据的情况下,很难说更多;但这个文件实际上只包含PHP代码似乎不太可能;这听起来像是你想要读取大量以类似PHP的格式编码的信息。

您应该尝试使用read the file in chunks or lines而不是使用include。

-1

您尝试加载此类文件的唯一可能原因是可能将其导入到数据库中。每个数据库都有一个用于此目的的文件加载器。 Mysql有专门处理这个问题的LOAD INFILE。我建议首先在数据库中获取数据,然后使用PHP或MySQL将数据转换为您的需要。使用PHP解析1GB文件可能不是PHP或您的资源的最佳用法。