• 締切済み

【PHP】途中からファイルを読む方法は?

PHP初心者です。 環境はPHP4.4.4 です。 ファイルを読み込むときはfopen()関数 fgets()関数を使って改行単位で上から1行ずつ読んでいくわけですが、最後のほうだけ読めばよい場合無駄に感じます。 たとえばファイルに 情報1 情報2 情報3 … 情報100 と書いてあり情報100だけ読めばいい場合、どうすれば最短時間で読み込めるでしょうか? お詳しい方、よろしくお願いいたします。

みんなの回答

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

ファイルそのものを分割したほうがいいと思います。

ikataro
質問者

お礼

そういう手もありますね・・ でも人間にとって煩雑になるような。 ありがとうございました。

  • little-m
  • ベストアンサー率44% (45/102)
回答No.2

#ANo.1 です。 >バイト数指定だと文字数がわからないと指定できないのではないでしょうか? >結局全部読む必要があるのではないかと…  可変長レコードの場合は、実際のデータの中にレコード区切り(改行コードなど)があり、それを判断しなければレコード単位が判りませんので、これはファイルの先頭から順次読んでいくしか方法はありません。  しかし、固定長レコードでファイルを作成している場合は、1レコードの長さ×レコード数で、その位置まで移動できます。  ファイル中の特定位置にfseek()などで高速に移動したい場合は、固定長レコードにする必要があります。 (ただし、現状、ファイルの入出力はバッファリングされますので、先頭から順次読み込んでもスピードにあまり差は無いかと思いますよ)

ikataro
質問者

お礼

なるほど。やはり想像したような機能はなさそうですね。 やっぱ大きなデータはDBなんでしょうね… ありがとうございました。

  • little-m
  • ベストアンサー率44% (45/102)
回答No.1

fseek() という関数で指定の位置に移動できますよ。

参考URL:
http://au2.php.net/manual/ja/function.fseek.php
ikataro
質問者

お礼

ありがとうございます。 バイト数指定だと文字数がわからないと指定できないのではないでしょうか? 結局全部読む必要があるのではないかと… いきなり「○行目を読め」とかいう指定があればいいのですが。

関連するQ&A

専門家に質問してみよう