Maison >développement back-end >tutoriel php >Comment puis-je diffuser des téléchargements de fichiers volumineux avec cURL pour éviter les problèmes de mémoire ?

Comment puis-je diffuser des téléchargements de fichiers volumineux avec cURL pour éviter les problèmes de mémoire ?

DDD
DDDoriginal
2024-12-01 13:35:10288parcourir

How Can I Stream Large File Downloads with cURL to Avoid Memory Issues?

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!

Déclaration:
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