7

file_get_contentsリモートファイルを取得して処理しています。残念ながら、ファイルは非常に大きく、それぞれの小さなセグメントのみが必要です。読み取る必要があるオフセットとその長さから正確にわかっていますが、phpマニュアルを読むと、これはfile_get_contentsローカルファイルでのみ可能であるようです。

ファイル全体をダウンロードしない方法はありますか?

4

4 に答える 4

2

fopenfseekおよびfread関数の代わりに使用する必要がありますfile_get contents

ここにのドキュメントへのリンクがあります

fopenファイルをバイトのストリームとして開き、使用して目的の位置にシークし、使用fseekして必要なだけバイトを読み取ることができますfread

于 2012-10-04T12:53:11.843 に答える
1

私の知る限り、リモート ファイルを開いてファイル ポインタを特定のポイントに移動する方法はありません。その機能を提供するある種のリモート サービスが必要です。

fopen と fseek は機能しているように見えますが、そこには落とし穴があります。マニュアルの作成:

すべてのストリームがシークをサポートしているわけではありません。シークをサポートしていない場合、現在の位置からのフォワード シークは、データの読み取りと破棄によって実行されます。他の形式のシークは失敗します。

サービスの実装に関しては、数多くの例があります。変更されたブロックのみをリモート マシンからローカル マシンにミラーリングする rsync ソリューションが気に入っています。

于 2012-10-04T12:56:25.250 に答える
0

誰かがこれに出くわした場合、それを処理する良い方法は cURL とCURLOPT_WRITEFUNCTION.

于 2012-10-05T10:22:51.990 に答える
0

http サーバーからファイルを読み取るRange場合、削除サーバーがサポートしている場合はヘッダーを設定できます。

于 2012-10-04T13:19:49.227 に答える