Große Dateien von URLs ohne Speicherprobleme herunterladen
Webentwickler stehen häufig vor der Herausforderung, große Dateien von Remote-URLs herunterzuladen. Während der einfache Ansatz mit file_get_contents() und file_put_contents() für kleinere Dateien möglicherweise ausreicht, ist er für Dateien, die die Speichergrenzen überschreiten, nicht ausreichend. Dieses Problem warf die Frage auf: Wie kann man große Dateien inkrementell herunterladen, ohne die Speicherressourcen zu erschöpfen?
Glücklicherweise bietet PHP eine elegante Lösung, die dieses Problem angeht. Seit Version 5.1.0 unterstützt file_put_contents() das Schreiben von Daten in Blöcken, indem ein Stream-Handle als zweites Argument übergeben wird.
Hier ist der geänderte Code, der diese Funktion nutzt:
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
Dies Der Code funktioniert wie folgt:
Das PHP-Handbuch erklärt, dass die Übergabe eines Stream-Handles an file_put_contents() das Kopieren des verbleibenden Puffers aus dem Stream auslöst in die Zieldatei. Dieser Mechanismus spiegelt effektiv die Funktionalität von stream_copy_to_stream() wider.
Durch den Einsatz dieser Technik können Entwickler mühelos große Dateien herunterladen, ohne auf Speicherbeschränkungen zu stoßen, wodurch eine nahtlose Datenübertragung selbst für die umfangreichsten Dateigrößen gewährleistet wird.
Das obige ist der detaillierte Inhalt vonWie kann ich große Dateien von URLs in PHP herunterladen, ohne dass der Speicher erschöpft ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!