Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Muat Turun Fail Besar dengan Curl Tanpa Melebihi Had Memori?

Bagaimana untuk Muat Turun Fail Besar dengan Curl Tanpa Melebihi Had Memori?

Barbara Streisand
Barbara Streisandasal
2024-12-15 08:42:11922semak imbas

How to Download Large Files with Curl Without Exceeding Memory Limits?

Memuat Turun Fail Besar dengan Curl: Alternatif untuk Membaca ke dalam Memori

Soalan: Bagaimana seseorang boleh mengatasi kekangan memori apabila memuat turun fail besar menggunakan curl, yang biasanya dibaca ke dalam ingatan?

Isu ini timbul dalam situasi di mana saiz fail melebihi memori yang tersedia pada pelayan. Pendekatan yang lebih cekap ialah menstrim fail terus ke cakera, memintas memori sepenuhnya.

Jawapan:

<?php
set_time_limit(0);
// Set the path to the target file
$fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+');
// Exchange spaces with %20 to ensure compatibility with URLs
$ch = curl_init(str_replace(" ", "%20", $url));
// Extend the timeout value to accommodate large files
curl_setopt($ch, CURLOPT_TIMEOUT, 600);
// Directs curl to write response to file
curl_setopt($ch, CURLOPT_FILE, $fp);
// Automatically follows redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// Send request and receive response
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

Dalam kod ini, pengubahsuaian berikut adalah kunci:

  • curl_setopt($ch, CURLOPT_FILE, $fp); menentukan fail sasaran untuk muat turun, membolehkan penstriman terus ke cakera.
  • curl_setopt($ch, CURLOPT_TIMEOUT, 600); memastikan masa yang mencukupi untuk muat turun fail yang besar.
  • set_time_limit(0); menghalang penamatan pramatang kerana tamat masa pelayan.

Atas ialah kandungan terperinci Bagaimana untuk Muat Turun Fail Besar dengan Curl Tanpa Melebihi Had Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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