Maison  >  Article  >  développement back-end  >  Pourquoi est-ce que j'obtiens « erreur curl 18 - transfert fermé avec des données de lecture en attente restantes » et comment puis-je y remédier ?

Pourquoi est-ce que j'obtiens « erreur curl 18 - transfert fermé avec des données de lecture en attente restantes » et comment puis-je y remédier ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-25 06:13:02228parcourir

Why am I Getting

Résolution de "l'erreur curl 18 - transfert fermé avec des données de lecture en suspens restantes"

Lors de la récupération de données à partir d'un serveur distant via l'outil de ligne de commande curl, vous pouvez rencontrer le message d'erreur "Erreur curl 18 - transfert terminé avec des données de lecture en attente restantes." Cette erreur indique qu'une tentative de récupération de données à partir d'une URL a été interrompue avant que la réponse complète ait été reçue, ce qui a entraîné des données partielles ou manquantes.

En général, cette erreur se produit lorsque CURLOPT_RETURNTRANSFER est défini sur true, indiquant que le La fonction curl_exec doit renvoyer les données récupérées de l'URL. Cependant, la désactivation de CURLOPT_RETURNTRANSFER en le définissant sur false permet d'afficher directement les données récupérées, évitant ainsi l'erreur.

Quelles sont les causes de l'erreur ?

Cette erreur se produit en raison de l'utilisation du codage fragmenté dans la réponse HTTP. Le codage en morceaux permet à un serveur d'envoyer des données en plusieurs morceaux, chaque morceau étant terminé par une séquence de caractères définie.

Lorsqu'une connexion est fermée avant que tous les morceaux ne soient reçus, libcurl reconnaît que le dernier morceau reçu était incomplet et génère le message d'erreur.

Résoudre le problème

Il existe deux manières principales de résoudre ce problème :

1. Désactiver le codage en morceaux :

Vous pouvez essayer d'émettre une requête HTTP 1.0 à la place en ajoutant l'option -0 à la commande curl. HTTP 1.0 n'utilise pas de codage fragmenté, cette solution de contournement peut donc résoudre l'erreur.

2. Inspectez la configuration du serveur et du réseau :

L'erreur peut indiquer un problème avec le serveur ou la connexion réseau. Il est recommandé de vérifier les éléments suivants :

  • La configuration du serveur pour s'assurer qu'il n'est pas mal configuré ou qu'il ne rencontre pas de problèmes.
  • La connexion réseau entre le client et le serveur pour identifier tout potentiel goulots d'étranglement ou interruptions.

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