ホームページ > バックエンド開発 > PHPチュートリアル > PHP でメモリを使い果たさずに URL から大きなファイルをダウンロードするにはどうすればよいですか?

PHP でメモリを使い果たさずに URL から大きなファイルをダウンロードするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-16 01:38:13
オリジナル
642 人が閲覧しました

How Can I Download Large Files from URLs in PHP without Memory Exhaustion?

メモリの問題を発生させずに 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'));
ログイン後にコピー

これコードは次のように動作します:

  • を使用してリモート URL をストリーム ハンドルとして開きます。 fopen().
  • 次に、このハンドルを file_put_contents() にデータ パラメーターとして渡します。
  • リモート ファイルがダウンロードされると、ローカル ファイル Tmpfile.zip に徐々に書き込まれます。

PHP マニュアルには、ストリーム ハンドルを file_put_contents() に渡すとコピーがトリガーされると説明されています。ストリームからターゲット ファイルまでの残りのバッファー。このメカニズムは、stream_copy_to_stream() の機能を効果的に反映しています。

この手法を採用することで、開発者はメモリの制約に遭遇することなく大きなファイルを簡単にダウンロードでき、最も大きなファイル サイズでもシームレスなデータ転送を保証できます。

以上がPHP でメモリを使い果たさずに URL から大きなファイルをダウンロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート