如何在只有1GB内存可供PHP使用的虚拟专用服务器上迭代4GB CSV文件?

如何在只有1GB内存可供PHP使用的虚拟专用服务器上迭代4GB CSV文件?,php,csv,iteration,Php,Csv,Iteration,所以我的情况是这样的: 我有一个CSV 4GB逗号分隔值文件,我的虚拟专用服务器只有1 GB的内存专用于PHP 我的问题是: 有没有办法一次只为一个CSV行分配内存,而不是将整个4GB文件读入内存 示例代码: <?php function getRows($file){ $handle = fopen($file, 'rb'); if($handle === false){ throw new Exception(); } while(feo

所以我的情况是这样的:

我有一个CSV 4GB逗号分隔值文件,我的虚拟专用服务器只有1 GB的内存专用于PHP

我的问题是:

有没有办法一次只为一个CSV行分配内存,而不是将整个4GB文件读入内存

示例代码:

<?php
function getRows($file){
    $handle = fopen($file, 'rb');
    if($handle === false){
        throw new Exception();
    }
    while(feof($handle)===false){
        $line_of_txt=fgetcsv($handle);
    }
    fclose($handle);
    return $line_of_txt;
}
foreach(getRows('DWBankStatmentApril.csv') as $row){
    print_r($row);
}
?>

现在就拿到了

 <?php
function getRows($file){
    $handle = fopen($file, 'rb');
    if($handle === false){
        throw new Exception();
    }
    while(feof($handle)===false){
        yield=fgetcsv($handle);
    }
    fclose($handle);

}
foreach(getRows('DWBankStatmentApril.csv') as $row){
    print_r($row);
}
?>


这个问题是通过使用生成器解决的,它们主要用于只有少量系统内存的正向交互大数据集

您会遇到什么错误?加载时间;只有1GB的VPS上的4GB数据可以判断问题出在哪里;显然,内存的使用很差。我想看看是否有任何方法可以在只有少量系统内存的情况下迭代大型数据集。我问你有哪些错误,具体的错误?你目前是如何读取该文件的?你能给我们提供一些代码来查看吗?如果你已经这样做了,你需要在这里包含你的代码,以便任何人都能知道为什么它仍然使用太多内存。