Rumah > pembangunan bahagian belakang > tutorial php > Bagaimanakah Curl Stream Muat Turun Fail Besar Terus ke Cakera untuk Mengelakkan Isu Memori?

Bagaimanakah Curl Stream Muat Turun Fail Besar Terus ke Cakera untuk Mengelakkan Isu Memori?

DDD
Lepaskan: 2024-12-05 07:33:10
asal
491 orang telah melayarinya

How Can Curl Stream Large File Downloads Directly to Disk to Avoid Memory Issues?

Mengendalikan Muat Turun Fail Besar dengan Curl: Menstriman ke Cakera

Memuat turun fail besar menggunakan curl boleh menjadi mencabar kerana kekangan memori. Kaedah tradisional, yang membaca keseluruhan fail ke dalam ingatan sebelum menulisnya ke cakera, boleh menyebabkan masalah prestasi. Untuk mengatasi had ini, pertimbangkan untuk menstrim fail terus ke cakera.

Berikut ialah penyelesaian yang menggunakan fungsi curl_setopt() untuk mengkonfigurasi pilihan CURLOPT_FILE. Pilihan ini menentukan penuding fail di mana curl boleh menulis data yang dimuat turun secara terus:

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);
Salin selepas log masuk

Dalam kod yang dipertingkat ini:

  • set_time_limit(0) mengalih keluar had masa PHP untuk muat turun yang besar .
  • fopen membuka fail destinasi untuk menulis.
  • curl_init memulakan curl dengan URL yang diberikan.
  • CURLOPT_TIMEOUT menetapkan nilai tamat masa yang tinggi untuk muat turun besar.
  • CURLOPT_FILE menentukan penunjuk fail di mana data yang dimuat turun ditulis.
  • CURLOPT_FOLLOWLOCATION membenarkan skrip untuk ikut ubah hala, memastikan muat turun selesai berjaya.
  • curl_exec melaksanakan curl untuk memuat turun fail.
  • curl_close dan fclose tutup curl dan pengendali fail, masing-masing.

Dengan menggunakan teknik ini, curl boleh menstrim data yang dimuat turun terus ke cakera, memintas kekangan memori dan membolehkan pengendalian besar yang cekap fail.

Atas ialah kandungan terperinci Bagaimanakah Curl Stream Muat Turun Fail Besar Terus ke Cakera untuk Mengelakkan Isu Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan