メモリの問題を発生させずに URL から大きなファイルをダウンロードする
Web 開発者は一般に、リモート URL から大きなファイルをダウンロードするという課題に遭遇します。 file_get_contents() と file_put_contents() を使用した単純なアプローチは、小さなファイルには十分ですが、メモリ制限を超えるファイルには不十分です。この問題により、メモリ リソースを使い果たさずに大きなファイルを段階的にダウンロードする方法という疑問が生じました。
幸いなことに、PHP は、この問題に対処する洗練されたソリューションを提供しています。バージョン 5.1.0 以降、file_put_contents() は、ストリーム ハンドルを 2 番目の引数として渡すことにより、チャンクでのデータの書き込みをサポートしています。
この機能を利用する変更されたコードは次のとおりです。
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
これコードは次のように動作します:
PHP マニュアルには、ストリーム ハンドルを file_put_contents() に渡すとコピーがトリガーされると説明されています。ストリームからターゲット ファイルまでの残りのバッファー。このメカニズムは、stream_copy_to_stream() の機能を効果的に反映しています。
この手法を採用することで、開発者はメモリの制約に遭遇することなく大きなファイルを簡単にダウンロードでき、最も大きなファイル サイズでもシームレスなデータ転送を保証できます。
以上がPHP でメモリを使い果たさずに URL から大きなファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。