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 サイトの他の関連記事を参照してください。