これは非常に簡単そうに見えますし、実際簡単です。ファイルをサーバーにダウンロードするために必要なことは次のとおりです。
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()
。
(ありがとうハクレ。