Diffuser des téléchargements de fichiers volumineux avec CURL
Le téléchargement de gros fichiers distants peut être un défi, en particulier lorsque les fichiers ne peuvent pas tenir dans la mémoire disponible sur le serveur. Cela peut être un problème fréquent lors de l'utilisation de CURL, qui stocke par défaut les données du fichier en mémoire avant de les écrire sur le disque.
Heureusement, il existe une solution qui vous permet de diffuser le fichier directement sur le disque. Pour y parvenir, apportez les ajustements suivants à votre code :
<?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);
En définissant CURLOPT_FILE sur le pointeur de fichier, vous demandez à CURL d'écrire les données téléchargées directement dans le fichier sur le disque au lieu de les stocker en mémoire. . Cela garantit que même les fichiers très volumineux peuvent être téléchargés en douceur sans limitations de mémoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!