ホームページ >バックエンド開発 >PHPチュートリアル >メモリの問題を回避するために、cURL を使用して大きなファイルのダウンロードをストリーミングするにはどうすればよいですか?

メモリの問題を回避するために、cURL を使用して大きなファイルのダウンロードをストリーミングするにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-01 13:35:10273ブラウズ

How Can I Stream Large File Downloads with cURL to Avoid Memory Issues?

CURL を使用した大きなファイルのストリーミング ダウンロード

大きなリモート ファイルのダウンロードは、特にファイルが使用可能なメモリに収まらない場合に困難になることがあります。サーバー。これは、デフォルトでファイル データをディスクに書き込む前にメモリに保存する CURL を使用する場合に頻繁に発生する問題です。

幸いなことに、代わりにファイルをディスクに直接ストリーミングできる解決策があります。これを実現するには、コードに次の調整を加えます。

<?php
set_time_limit(0);

// Open a file pointer for writing
$fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+');

// Set up CURL options
$ch = curl_init(str_replace(" ", "%20", $url));

// Set timeout to a high enough value
curl_setopt($ch, CURLOPT_TIMEOUT, 600);

// Write CURL response to the file pointer
curl_setopt($ch, CURLOPT_FILE, $fp);

// Enable following of location headers
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

// Execute CURL
curl_exec($ch);

// Close CURL and the file pointer
curl_close($ch);
fclose($fp);

CURLOPT_FILE をファイル ポインターに設定することで、ダウンロードしたデータをメモリに保存するのではなく、ディスク上のファイルに直接書き込むように CURL に指示します。 。これにより、非常に大きなファイルでもメモリ制限なくスムーズにダウンロードできるようになります。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。