URLからサーバーにファイルをダウンロードする 質問する

URLからサーバーにファイルをダウンロードする 質問する

これは非常に簡単そうに見えますし、実際簡単です。ファイルをサーバーにダウンロードするために必要なことは次のとおりです。

file_put_contents("Tmpfile.zip", file_get_contents("http://someurl/file.zip"));

ただ 1 つ問題があります。100 MB のような大きなファイルがある場合はどうなるでしょうか。その場合、メモリが不足し、ファイルをダウンロードできなくなります。

私が欲しいのは、ファイルをダウンロードしながらディスクに書き込む方法です。そうすれば、メモリの問題に遭遇することなく、より大きなファイルをダウンロードできます。

ベストアンサー1

PHP 5.1.0以降、file_put_contents()ストリーム ハンドルをパラメータとして渡すことで、部分的な書き込みをサポートします$data

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));

マニュアルより:

データ(2番目の引数)がストリームリソースの場合、そのストリームの残りのバッファが指定されたファイルにコピーされます。これは、stream_copy_to_stream()

(ありがとうハクレ

おすすめ記事