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
Libérer: 2024-12-01 13:35:10
original
225 Les gens l'ont consulté

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

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!

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