Maison > développement back-end > tutoriel php > Comment Curl peut-il diffuser des téléchargements de fichiers volumineux directement sur le disque pour éviter les problèmes de mémoire ?

Comment Curl peut-il diffuser des téléchargements de fichiers volumineux directement sur le disque pour éviter les problèmes de mémoire ?

DDD
Libérer: 2024-12-05 07:33:10
original
491 Les gens l'ont consulté

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

Gestion des téléchargements de fichiers volumineux avec Curl : diffusion en continu sur disque

Le téléchargement de fichiers volumineux à l'aide de Curl peut être difficile en raison de contraintes de mémoire. La méthode traditionnelle, qui lit l'intégralité du fichier en mémoire avant de l'écrire sur le disque, peut entraîner des problèmes de performances. Pour surmonter cette limitation, envisagez de diffuser le fichier directement sur le disque.

Voici une solution qui utilise la fonction curl_setopt() pour configurer l'option CURLOPT_FILE. Cette option spécifie un pointeur de fichier où curl peut écrire directement les données téléchargées :

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);
Copier après la connexion

Dans ce code amélioré :

  • set_time_limit(0) supprime la limite de temps PHP pour les téléchargements volumineux .
  • fopen ouvre le fichier de destination pour l'écriture.
  • curl_init initialise curl avec le donné URL.
  • CURLOPT_TIMEOUT définit une valeur de délai d'attente élevée pour les téléchargements volumineux.
  • CURLOPT_FILE spécifie le pointeur de fichier où les données téléchargées sont écrites.
  • CURLOPT_FOLLOWLOCATION permet au script de suivre les redirections, en s'assurant que le téléchargement se termine avec succès.
  • curl_exec exécute curl pour téléchargez le fichier.
  • curl_close et fclose ferment respectivement les gestionnaires de curl et de fichiers.

En utilisant cette technique, curl peut diffuser les données téléchargées directement sur le disque, en contournant les contraintes de mémoire et permettre une gestion efficace des fichiers volumineux.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal