【发布时间】:2012-01-03 15:51:47
【问题描述】:
我在包含非常大的文件时遇到问题,因此使用了ini_set('memory_limit', '-1');
但仍然不能包含刚刚超过 1GB 的文件。我该怎么办?
【问题讨论】:
-
您希望包含哪种类型的超过 1GB 的文件?这是某种大型阵列吗?您是否考虑过尝试分块读取数据?
-
您应该做的是不要包含大小为 1GB 的文件。我什至不会问为什么,从一英里外就能看出你的应用架构有问题。
-
我的脚本为用户生成产品提要。它查看是否存在 .txt 文件,如果存在,则包含该文件,如果不存在,则生成该文件。有时文件很大,具体取决于用户拥有多少产品。
-
那是错误的设计。
include指令用于评估一段 PHP 可以执行的代码。它必须由词法分析器解析并转换为操作码以供以后执行。在 PHP 文件中包含提要是没有意义的,因为您没有执行任何 PHP 代码,而是试图输出一些产品费用(我只能假设它是一些文本输出,无论是 xml 还是 csv)。您应该做的是使用fopen()、fread和print函数使用分块输出。一次打开文件并输出几千字节的块。输出演出提要需要一些时间,无论是输出还是下载。
标签: php memory-management server-side-includes