Curl を使用した大きなファイルのダウンロードの処理: ディスクへのストリーミング
curl を使用した大きなファイルのダウンロードは、メモリの制約により困難になる場合があります。ファイル全体をディスクに書き込む前にメモリに読み取る従来の方法では、パフォーマンスの問題が発生する可能性があります。この制限を克服するには、ファイルをディスクに直接ストリーミングすることを検討してください。
ここでは、curl_setopt() 関数を使用して CURLOPT_FILE オプションを構成するソリューションを示します。このオプションは、curl がダウンロードされたデータを直接書き込むことができるファイル ポインターを指定します:
set_time_limit(0); // Disable PHP time limit // Open a file for writing $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Initialize curl $ch = curl_init(str_replace(" ", "%20", $url)); // Set timeout to a high value curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Write curl response to file curl_setopt($ch, CURLOPT_FILE, $fp); // Follow any redirects curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute curl curl_exec($ch); // Close curl and file handlers curl_close($ch); fclose($fp);
この改良されたコードでは:
この手法を使用すると、curl は次のことを行うことができます。ダウンロードしたデータをディスクに直接ストリーミングすることで、メモリの制約を回避し、大きなファイルを効率的に処理できるようにします。
以上がCurl はメモリの問題を回避するために、大きなファイルのダウンロードをディスクに直接ストリーミングするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。