アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPでクイズのプログラムを作ったのですが、
CSVデータの件数が多いので処理に時間がかかり、
回答の集計で困ってます。

具体的に、
PHPクイズの回答をCSV形式でanswer.txtに記録させます。
記録の内容は、
問題1の回答番号、問題2の回答番号、問題3の回答番号、
というように記録させます。
このとき、1万件くらいの回答データが入ったanswer.txtから、
問題1で回答番号を1で答えた人の数、2で答えた人の数というように、
データの集計をしたいのですが、
効率の良い集計方法を教えていただければありがたいです。
自分が考えたのは、
1.file文で全行一括読み込みしてから
2.for文でデータを検証(総データ数分だけ繰り返す)
3.回答番号が一致したら、flagに+1をする
4.flagの数が集計結果となり、これを出力する
というルーチンです。
1万件くらいになると、あまり速くないです。
ちなみに、このルーチンで処理できるデータ件数って、
どのくらいが限度となるんでしょうか。

文章が稚拙で、長くなってしまい、すみません。
よろしくご指導、お願いします。

A 回答 (3件)

予め集計結果のファイルや途中結果を別にどっかへ置いておけばいいんじゃないですかね?


回答時にanswer.txtへ保存するのと同じでtotal.txtを作っちゃうとか。
バックグラウンド処理でたまに集計させておくとか。

データベースを使っても同じことが言えますが、予め集計しておいた方が早くなると思います。

>ちなみに、このルーチンで処理できるデータ件数って、
>どのくらいが限度となるんでしょうか。

遅いと思ったときはすでに限度だと思います。
HTMLを表示する時に3秒待たされると遅いって思うらしいですよ。
    • good
    • 0

単純に見る人が多いだけなら、pear/Cache なんかで、キャッシングしてしまうのもアリかと。


集計ファイルを前もって作るよりは安直ですが、キャッシュをフラッシュするタイミングで遅くはなります。

あくまで閲覧者が多いと言う条件でなら有効です。
    • good
    • 0

いまいちどういう状況かつかみかねますが


SQLをつかって整理するのが妥当でしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!