我想知道 PHP 5 中是否有数组大小限制?我编写了一个 PHP 脚本来更改文件中每行的最后一个元素。在打印修改后文件内容时,当我将脚本运行在小型文件上(即每行包含 4 个值),它可以正常工作。但是,当我将其运行在较大的文件上(例如 60000 行,每行包含 90 个值),它不会改变原始文件的一点内容,但脚本在运行时没有抛出任何异常消息。这是什么问题?
我想知道 PHP 5 中是否有数组大小限制?我编写了一个 PHP 脚本来更改文件中每行的最后一个元素。在打印修改后文件内容时,当我将脚本运行在小型文件上(即每行包含 4 个值),它可以正常工作。但是,当我将其运行在较大的文件上(例如 60000 行,每行包含 90 个值),它不会改变原始文件的一点内容,但脚本在运行时没有抛出任何异常消息。这是什么问题?
您可能已经用尽了内存,因为您的数组大小理论上只受脚本分配的内存量限制。
在脚本开头放置ini_set('memory_limit', '1024M');
以将内存限制设置为1 GB。您可能需要将其增加到更高的值以获得更好的结果。
正如manyxcxi所说,您可能需要增加memory_limit。有时,通过unset($var)取消大变量的设置也可以减少内存使用。只有当变量在其最后使用点远远超出范围时才需要这样做。
你是不是现在正在读取整个文件,转换它,然后写入新文件?如果是这样,你可以通过循环工作来减少内存使用,其中你读取一个小部分,处理它并将其写出,并重复这个过程直到你到达文件的结尾。但前提是转换算法不需要整个文件来转换一个小部分。