2012-02-10 13 views
1

私はこの大きなtxtファイル8mb +を区切っています。このファイルの内容を取り、それを表示するページを生成する必要があります。これにはページネーションと詳細情報が必要です。このファイルは常に更新されるので、毎回このファイルをデータベースにインポートするだけではありません。だから私の質問は、このようなことをするベストプラクティスは何ですか?PHP:区切られたtxtファイルからページ表示を生成するためのベストプラクティスは何ですか?

私の理想的な解決策は要約情報のリストを表示し、「詳細」をクリックするとより詳細なページを表示することです。これは私が記述したもののように動的に行うことができますか?

おかげで...

+0

これを行う良い方法がない場合は、私はそれをdbに保存しなければならないと思います...だから、ファイルが大きすぎるので、これは何もしません。 –

+0

これはデータベースで処理する必要があることが明らかになりました...回答を提出していただければ幸いです...ありがとうございます。 –

+0

ファイルが追加されるだけですか、または既存の行が変更または削除されることがありますか?前者の場合、ファイル内の行に効率的にアクセスするためにバイトオフセットを使用することができますが、実際に何をしているのかわからない限り、この方法はお勧めできません。 –

答えて

2

さて、あなたは各ページの負荷(あなたがいないを行う)で8メガバイトのファイルを解析したくない場合は、私はデータベースのテーブルの行で区切られたデータを格納するお勧めしますその方法で情報にアクセスしてください。可能であれば、テキストファイルを常に更新するのではなく、代わりにデータベースを更新して中間の人物を削除するためのインタフェースを提供してください。

あなたが言及したようにテキストファイルを改ページすることは悪夢になる可能性があります。 fseekのようなビルトインのファイルストリーム関数を使用するのは、行がまったく同じバイト長(場合によっては)の場合にのみ便利です。データベースを使用すると、データセット全体をロードする必要なく、最後の20行に簡単にアクセスできます。テキストファイルは、あなたがしようとしているものに役立ちません。

区切られたファイルが他のソフトウェアから作成されているように見えます。これは、データを直接データベースに格納することを妨げています。この場合、テキストファイルに変更がないか定期的にチェックし、テキストファイルに表示されるように新しい情報をデータベースに保存するスクリプトを作成します。区切られたファイルをPHPスクリプトが修正できるようにすることができれば、データベースに格納されている行を削除して、テキストファイルのサイズを小さく保つことができます。

データベースは、あなたが概説するシナリオのタイプを達成するための最良のソリューションです。

+0

実際にファイルの最後の1kBを読むには、['fseek'](http://php.net/fseek)を使うだけです。フラットファイルでは困難なのは、中間のどこかの特定の行を見つけることです。特に、正確なバイトオフセットがわからない場合は特にそうです。 –

+0

はい。テキストファイルに固定長のエントリがある場合、または既存のエントリに新しいエントリが追加された場合(この場合、各エントリの位置と長さを含むファイルを持つことができます)、 'fseek'を使用できます。しかし、ファイル内のランダムなエントリが更新されると、それほど簡単ではありません。 – Carsten

+0

私は 'fseek'と考えましたが、結果を実際に改ページするには' fseek'はあまり役に立たないでしょう。必要な場所に直接シークできるように行が同じバイト長である可能性はありますか?私はそれが可能だと思いますが、依然としてOPが求めている "ベストプラクティス"ではありません。 – rdlowrey

関連する問題