Heim >Backend-Entwicklung >PHP-Tutorial >Wie lade ich große Dateien mit Curl herunter, ohne die Speichergrenzen zu überschreiten?

Wie lade ich große Dateien mit Curl herunter, ohne die Speichergrenzen zu überschreiten?

Barbara Streisand
Barbara StreisandOriginal
2024-12-15 08:42:11922Durchsuche

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

Große Dateien mit Curl herunterladen: Eine Alternative zum Einlesen in den Speicher

Frage: Wie kann man die Speicherbeschränkungen beim Herunterladen großer Dateien mit überwinden? Curl, das normalerweise in den Speicher liest?

Dieses Problem tritt in Situationen auf, in denen die Dateigröße den verfügbaren Speicher auf dem Server überschreitet. Ein effizienterer Ansatz besteht darin, die Datei direkt auf die Festplatte zu streamen und dabei den Speicher vollständig zu umgehen.

Antwort:

<?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);
?>

In diesem Code sind die folgenden Änderungen entscheidend:

  • curl_setopt($ch, CURLOPT_FILE, $fp); Gibt die Zieldatei für den Download an und ermöglicht das direkte Streaming auf die Festplatte.
  • curl_setopt($ch, CURLOPT_TIMEOUT, 600); stellt ausreichend Zeit für das Herunterladen großer Dateien sicher.
  • set_time_limit(0); verhindert vorzeitige Beendigung aufgrund von Server-Timeouts.

Das obige ist der detaillierte Inhalt vonWie lade ich große Dateien mit Curl herunter, ohne die Speichergrenzen zu überschreiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn