Streaming großer Datei-Downloads mit CURL
Das Herunterladen großer Remote-Dateien kann eine Herausforderung sein, insbesondere wenn die Dateien nicht in den verfügbaren Speicher passen Der Server. Dies kann ein häufiges Problem bei der Verwendung von CURL sein, das Dateidaten standardmäßig im Speicher speichert, bevor sie auf die Festplatte geschrieben werden.
Glücklicherweise gibt es eine Lösung, mit der Sie die Datei stattdessen direkt auf die Festplatte streamen können. Um dies zu erreichen, nehmen Sie die folgenden Anpassungen an Ihrem Code vor:
<?php set_time_limit(0); // Open a file pointer for writing $fp = fopen(dirname(__FILE__) . '/localfile.tmp', 'w+'); // Set up CURL options $ch = curl_init(str_replace(" ", "%20", $url)); // Set timeout to a high enough value curl_setopt($ch, CURLOPT_TIMEOUT, 600); // Write CURL response to the file pointer curl_setopt($ch, CURLOPT_FILE, $fp); // Enable following of location headers curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Execute CURL curl_exec($ch); // Close CURL and the file pointer curl_close($ch); fclose($fp);
Indem Sie CURLOPT_FILE auf den Dateizeiger setzen, weisen Sie CURL an, die heruntergeladenen Daten direkt in die Datei auf der Festplatte zu schreiben, anstatt sie im Speicher zu speichern . Dadurch wird sichergestellt, dass auch sehr große Dateien ohne Speicherbeschränkungen reibungslos heruntergeladen werden können.
Das obige ist der detaillierte Inhalt vonWie kann ich große Dateidownloads mit cURL streamen, um Speicherprobleme zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!