みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

phpのファイルのファイルの読み込み速度について

現在、初めてphpプログラムを組んだサイトを作っています。

内容としては自分の撮った写真をコメント付きでアップしているのですが、
場所や季節でその写真を任意で並び替えられるようなウェブサイトを目指しています。
(チェックボタンなどで新着順、おすすめ順など訪問者が任意で並び替えられるphpプログラム)

$food["1"]["item0"]="tokyo";
$food["1"]["item1"]="0001.jpg";
$food["1"]["item2"]="20120430";

$food["2"]["item0"]="oosaka";
$food["2"]["item1"]="0002.jpg";
$food["2"]["item2"]="20120815";



それで写真を並び替えるために上記のような配列の塊が200近くあります。(
上記は例です)
今後1000個以上に増える予定ですのでphpファイルに全部記載すると編集しづらいので
上記の配列の部分だけ別にテキストファイルに記載してrequire_once ("test.txt")で
呼び出すことにしました。ここで質問なのですが、保存するファイルはテキストファイルで
よかったのでしょうか?

何分初めてで、ググってもその辺のことが詳しく書いてあるサイトもありません。
通常みなさんはどのようなファイル形式で保存するのでしょうか?
できる限り軽い方がいいです。

よろしくお願いします。

投稿日時 - 2012-11-17 11:33:47

QNo.7801929

すぐに回答ほしいです

質問者が選んだベストアンサー

大量のデータを条件に合わせて取り出したり、並べ替えたりしたいならRDBを使ったほうが結果的に性能が出ると思います。
お手軽に使うとしたらSQLite3を使えば良いと思いますし、多少本格的にやるならMySQLやPostgreSQL、MariaDBを使い、金に糸目をつけないなら商用RDBMSもあります。
あと、RDBではありませんがこういう用途で使うものとして、MongoDBも流行りですね。

「軽い」というのはどういう意味で使っているかよくわかりませんが、RDBを使って適切なindexつければ一定以上のデータに対しての動作は速くなると思います。まぁ、ごく小さなデータを扱っている場合はRDBのファイルを読み書きしたり、RDBMSにつないだりする部分で余計な手間がかかるので逆に遅くなる可能性もありますが、今後容量が増えるならやっておいて損はないでしょう。

とはいえ、SQLなどの知識をみにつけないとRDBは使えないですし、それなりに容量も取るので、今全然速度で困っていないし、追加・削除・アップデートも手書きで十分対応できる範囲というなら、わざわざRDBに手を出す理由も無いかもしれません。一応言っておくと、require_onceすると、PHPが毎回ソースコードを読み込み、解析しないといけないので、RDBに整理整頓されたデータとして入っているのに比べて多少性能を犠牲にすることになります。また、RDBを使うと並び替えやカテゴリー分けの処理をRDBにやらせることで自分でPHPで書くよりも高速になる可能性が高いです。

というわけで、今後容量が増え続けてもそこそこの性能を出したいならRDBを検討してみてください。まぁ、手頃なところでまずはSQLite3を使ってみるところから始めてはどうでしょうか?

投稿日時 - 2012-11-17 12:22:48

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

他の方が書いてるようにDBを使うのが正攻法ですが、テキストでなくphpファイルで配列の状態で書く方が読み込み後の評価、変換処理が省かれるのでやや速いです。
ちなみにrequireの方が速いです。(ただし2度読みしないようなロジックにしてください)
1000以上のレコードはテキストで処理するには多いですが、テキストファイルで管理されてるBBSもあるくらいですから非現実的ともいえないですね。

投稿日時 - 2012-11-17 15:21:54

あなたにオススメの質問