ホームページ > バックエンド開発 > PHPチュートリアル > Curl を使用してメモリ過負荷を発生させずに大きなファイルをダウンロードするにはどうすればよいですか?

Curl を使用してメモリ過負荷を発生させずに大きなファイルをダウンロードするにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-03 20:18:07
オリジナル
234 人が閲覧しました

How Can I Download Large Files with Curl Without Memory Overload?

Curl を使用したメモリ過負荷のない大きなファイルのダウンロード

cURL を使用して大きなリモート ファイルをダウンロードする場合、ファイル全体をメモリに読み取るデフォルトの動作特に大規模なデータの場合、問題が発生する可能性があります。この課題に対処するには、次の最適化されたアプローチを検討してください:

ダウンロードしたファイルをメモリに読み取る代わりに、次の修正コードを使用してディスクに直接ストリーミングできます:

<?php
set_time_limit(0);
// Specify the destination file to save the download
$fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+');
// Replace spaces in the URL with %20 for proper handling
$ch = curl_init(str_replace(" ", "%20", $url));
// Set a high timeout value to prevent interruptions while downloading large files
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
// Stream curl response to disk
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Execute the download and close all resources
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
ログイン後にコピー

このコードスニペットは cURL を初期化し、適切なタイムアウトを設定し、応答をメモリにロードするのではなく、指定されたファイルに直接書き込むように設定します。ダウンロードをディスクにストリーミングすることで、大きなファイルを処理する際のメモリ使用量を大幅に削減できます。

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

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