先の記事で、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
どうもこの関数は処理速度が遅いらしい。
ともかく少しでも速くしたいので、別の方法を試してみた。
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


コメントする