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];
}
私の2回目の試み:
//Performance: 0,125 seconds / 10.8 MB
while (($userinfo = fgetcsv($statisticsfile)) !== FALSE) {
list ($timestamp[], $value[], $text, $ip, $app) = $userinfo;
}
- パフォーマンスをさらに向上させる方法はありますか、それとも私の方法は可能な限り高速ですか?
- おそらくもっと重要です。どの列を読み取るかを定義する方法はありますか。たとえば、タイムスタンプのみが必要な場合もあります。float列が必要です。私の方法よりも良い方法はありますか(私の2回目の試みを見てください:)
ありがとう :)