读取csv文件的最快方法

时间:2011-10-09 21:01:59

标签: php performance csv fgetcsv

我正在寻找一种非常快速的方法来读取csv文件。我的数据结构如下所示:

timestamp ,float     , string    ,ip          ,string
1318190061,1640851625, lore ipsum,84.169.42.48,appname

我正在使用fgetcsv将这些数据读入数组。

问题:表现。该脚本必须定期读取(并处理)超过10,000个条目。

我的第一次尝试非常简单:

//Performance: 0,141 seconds / 13.5 MB

while(!feof($statisticsfile)) 
    {
    $temp = fgetcsv($statisticsfile);
    $timestamp[] = $temp[0];
    $value[] = $temp[1];
    $text[] = $temp[2];
    $ip[] = $temp[3];
    $app[] = $temp[4];
    }

我的第二次尝试:

//Performance: 0,125 seconds / 10.8 MB

while (($userinfo = fgetcsv($statisticsfile)) !== FALSE) {
   list ($timestamp[], $value[], $text, $ip, $app) = $userinfo;
}
  1. 有没有办法进一步提高性能,还是我的方法尽可能快?
  2. 可能更重要的是:有没有办法定义读取的列,例如有时只需要时间戳,浮点列。有没有比我的方式更好的方式(看看我的第二次尝试:)
  3. 谢谢:)

2 个答案:

答案 0 :(得分:1)

最长线多长时间?将其作为第二个参数传递给fgetcsv(),您将看到最大的改进。

答案 1 :(得分:0)

检查PHP读取此文件的时间:

如果是bigg将文件移动到ramdisk或SSD

  1. [..]有时只有时间戳
  2. 像这样的东西

    preg_match_all('#\d{10},\d{10}, (.*?),\d.\d.\d.\d,appname#',$f,$res);
    
    print_r($res);