解析CSV导致php内存不足


Parsing CSV causing out of memory in php

我正在使用adwords报告api来获取所有adwords帐户的所有广告和关键字信息。目前账户数为1363。报告api生成一个CSV,我正在将其解析为数组。下面是函数。在解析一个好的1180帐户后,它会给出一个错误

致命错误:允许的内存大小536870912字节已用完(试图分配262144字节)。

我已经将内存设置为512MB(我认为这是一个很大的内存)。

这一行出现错误

$line_of_text[] = fgetcsv($file_handle, 1024);

私有函数convertCSVtoArray($csvFile){

    try {
        $file_handle = fopen($csvFile, 'r');
        while (!feof($file_handle) ) {
            $line_of_text[] = fgetcsv($file_handle, 1024);
        }
        fclose($file_handle);
        return $line_of_text;
    } catch (Exception $e) {
        log_message('Exception in convertCSVtoArray()', $e);
        throw new Exception('Exception in convertCSVtoArray => '.$e);
    }
}

上述函数是从方法调用的

$data = $this->convertCSVtoArray($filePath);

我相信,在给定的代码中有一个内存泄漏,它正在吞噬所有的内存。

如果有任何解决方案,请提出建议。

要更改一个特定脚本的内存限制,请在脚本顶部包含这样一行:

ini_set("memory_limit","12M");

您还可以通过在服务器的PHP.ini文件中添加这样一行来对服务器上运行的所有PHP脚本进行永久更改:

memory_limit=12M