CSVファイルのデータをPHP⇒Smartyで使う パート2

| コメント(0)
先の記事で、fgetcsv関数を紹介しましたが
どうもこの関数は処理速度が遅いらしい。

ともかく少しでも速くしたいので、別の方法を試してみた。
fgetcsvに変えて、file_get_contentsを使ってみる。
ただし、file_get_contentsだと1行ずつ取り出してくれないので
explodeを2回入れる必要がある。
改行(\n)での分割とカンマ(,)での分割。
ちょっとコードが長くなるが、速いに越したことはない。

$fname = "csv/sample.csv";
$file = file_get_contents($fname);
$file_line = explode("\n", $file);
$i = 0;
foreach($file_line as $value) {
    list($sp_date, $sp_title, $sp_detail, $sp_url, $sp_photo) = explode(",", $value);
    $sp_data[$i]["sp_date"] = $sp_date;
    $sp_data[$i]["sp_title"] = $sp_title;
    $sp_data[$i]["sp_detail"] = $sp_detail;
    $sp_data[$i]["sp_url"] = $sp_url;
    $sp_data[$i]["sp_photo"] = $sp_photo;    
    $i++;
}// end foreach

ストップウォッチ片手にベンチマークしてみると
Firefoxにおいては、たしかに1秒ほど速くなった。

ただIE7.0でのテストは、わずかに速いかなという程度で
ほとんど変わらなかった・・・というかどちらも遅い。

DBが使える環境であれば、CSVよりも間違いなく
DBをおすすめする・・・当たり前か(^^;)

どちらにせよ、DBが使えない特殊な環境もしくは
制限がある場合は、CSVを使うしかないのだが
データを取り出す際には、fgetcsvよりもfile_get_contentsの方が
いいかもしれない。
他にもfile関数やfopen関数があるが、あまり変わらない
ということなので今回は試していない。

参考にしたサイト: 2Y's BLOG

コメントする