Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann Curl große Dateidownloads direkt auf die Festplatte streamen, um Speicherprobleme zu vermeiden?

Wie kann Curl große Dateidownloads direkt auf die Festplatte streamen, um Speicherprobleme zu vermeiden?

DDD
Freigeben: 2024-12-05 07:33:10
Original
499 Leute haben es durchsucht

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

Handhabung großer Dateidownloads mit Curl: Streaming auf die Festplatte

Das Herunterladen großer Dateien mit Curl kann aufgrund von Speicherbeschränkungen eine Herausforderung sein. Die herkömmliche Methode, bei der die gesamte Datei in den Speicher eingelesen wird, bevor sie auf die Festplatte geschrieben wird, kann zu Leistungsproblemen führen. Um diese Einschränkung zu überwinden, sollten Sie die Datei direkt auf die Festplatte streamen.

Hier ist eine Lösung, die die Funktion „curl_setopt()“ verwendet, um die Option „CURLOPT_FILE“ zu konfigurieren. Diese Option gibt einen Dateizeiger an, in den Curl die heruntergeladenen Daten direkt schreiben kann:

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);
Nach dem Login kopieren

In diesem verbesserten Code:

  • set_time_limit(0) entfernt das PHP-Zeitlimit für große Downloads .
  • fopen öffnet die Zieldatei zum Schreiben.
  • curl_init initialisiert Curl mit dem angegebenen URL.
  • CURLOPT_TIMEOUT legt einen hohen Timeout-Wert für große Downloads fest.
  • CURLOPT_FILE gibt den Dateizeiger an, in den die heruntergeladenen Daten geschrieben werden.
  • CURLOPT_FOLLOWLOCATION ermöglicht dem Skript, Weiterleitungen zu folgen. Stellen Sie sicher, dass der Download erfolgreich abgeschlossen wird.
  • curl_exec führt Curl aus Laden Sie die Datei herunter.
  • curl_close und fclose schließen die Curl- bzw. Datei-Handler.

Mit dieser Technik kann Curl die heruntergeladenen Daten direkt auf die Festplatte streamen und dabei die Speicherbeschränkungen umgehen und ermöglicht eine effiziente Handhabung großer Dateien.

Das obige ist der detaillierte Inhalt vonWie kann Curl große Dateidownloads direkt auf die Festplatte streamen, um Speicherprobleme zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage