ホームページ >バックエンド開発 >PHPチュートリアル >メモリの問題を回避するために、cURL を使用して大きなファイルのダウンロードをストリーミングするにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。