Maison > développement back-end > tutoriel php > Comment puis-je télécharger des fichiers volumineux à partir d'URL en PHP sans épuisement de la mémoire ?

Comment puis-je télécharger des fichiers volumineux à partir d'URL en PHP sans épuisement de la mémoire ?

Patricia Arquette
Libérer: 2024-12-16 01:38:13
original
641 Les gens l'ont consulté

How Can I Download Large Files from URLs in PHP without Memory Exhaustion?

Téléchargement de fichiers volumineux à partir d'URL sans problèmes de mémoire

Les développeurs Web sont généralement confrontés au défi de télécharger des fichiers volumineux à partir d'URL distantes. Bien que l'approche simple utilisant file_get_contents() et file_put_contents() puisse suffire pour les fichiers plus petits, elle ne suffit pas pour ceux qui dépassent les limites de mémoire. Ce problème a soulevé la question : comment télécharger des fichiers volumineux de manière incrémentielle sans épuiser les ressources mémoire.

Heureusement, PHP propose une solution élégante qui répond à ce problème. Depuis la version 5.1.0, file_put_contents() prend en charge l'écriture de données en morceaux en passant un handle de flux comme deuxième argument.

Voici le code modifié qui exploite cette fonctionnalité :

file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
Copier après la connexion

Ceci le code fonctionne comme suit :

  • Il ouvre l'URL distante en tant que descripteur de flux en utilisant fopen().
  • Il fournit ensuite ce handle à file_put_contents() comme paramètre de données.
  • Au fur et à mesure que le fichier distant est téléchargé, il est progressivement écrit dans le fichier local, Tmpfile.zip, sans surcharger la mémoire.

Le manuel PHP explique que passer un handle de flux à file_put_contents() déclenche la copie du tampon restant du diffuser vers le fichier cible. Ce mécanisme reflète efficacement la fonctionnalité de stream_copy_to_stream().

En employant cette technique, les développeurs peuvent télécharger sans effort des fichiers volumineux sans rencontrer de contraintes de mémoire, garantissant ainsi un transfert de données transparent, même pour les tailles de fichiers les plus volumineuses.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal