PHP中的数组大小限制

23

我想知道 PHP 5 中是否有数组大小限制?我编写了一个 PHP 脚本来更改文件中每行的最后一个元素。在打印修改后文件内容时,当我将脚本运行在小型文件上(即每行包含 4 个值),它可以正常工作。但是,当我将其运行在较大的文件上(例如 60000 行,每行包含 90 个值),它不会改变原始文件的一点内容,但脚本在运行时没有抛出任何异常消息。这是什么问题?


这不是数组大小限制的问题,而是执行时间限制的问题。 - xkeshav
6
你应该考虑使用流(streams)而不是将所有内容都倒入内存。 - MikeMurko
1
+1 MikeMurko。不要尝试将整个文件读入内存,而是逐行读取,对其进行编辑,写入目标,然后继续下一行... - siliconrockstar
2个回答

40

您可能已经用尽了内存,因为您的数组大小理论上只受脚本分配的内存量限制。 在脚本开头放置ini_set('memory_limit', '1024M');以将内存限制设置为1 GB。您可能需要将其增加到更高的值以获得更好的结果。


4

正如manyxcxi所说,您可能需要增加memory_limit。有时,通过unset($var)取消大变量的设置也可以减少内存使用。只有当变量在其最后使用点远远超出范围时才需要这样做。

你是不是现在正在读取整个文件,转换它,然后写入新文件?如果是这样,你可以通过循环工作来减少内存使用,其中你读取一个小部分,处理它并将其写出,并重复这个过程直到你到达文件的结尾。但前提是转换算法不需要整个文件来转换一个小部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接