Que dois-je faire si les données obtenues par php curl sont incomplètes ?

藏色散人
Libérer: 2023-03-08 08:32:01
original
3876 Les gens l'ont consulté

Solution aux données incomplètes obtenues par php curl : 1. Supprimez "CURLOPT_RETURNTRANSFER=true" ; 2. Modifiez la configuration du cache nginx du serveur de source de données.

Que dois-je faire si les données obtenues par php curl sont incomplètes ?

L'environnement d'exploitation de cet article : système Windows 7, PHP7.1, ordinateur Dell G3.

php curl obtient des données incomplètes

Lorsque curl obtient des données, la longueur de chaîne résultante est relativement grande. Pour un même résultat, les données obtenues à chaque fois sont incomplètes et la longueur est également différente.

Essayez de changer les informations HEADER par except : mais cela ne fonctionne toujours pas (le problème qui peut être résolu est que la quantité de données est trop importante et le résultat est vide).

Supprimez

 CURLOPT_RETURNTRANSFER = true
Copier après la connexion

pour imprimer les données complètes

Solution :

Modifier la configuration du cache nginx du serveur de source de données [Recommandé :Tutoriel vidéo PHP]

fastcgi_buffers a été modifié de 8*128k d'origine à 8*1M

Ce qui suit est extrait de https :/ /segmentfault.com/a /1190000007513677

Mécanisme de tampon de Nginx Pour la réponse du serveur FastCGI, Nginx la met en mémoire tampon, puis l'envoie à son tour au navigateur client. La taille du tampon est contrôlée par les deux valeurs fastcgi_buffers et fastcgi_buffer_size.

Par exemple, la configuration suivante :

fastcgi_buffers 8 4K ;

fastcgi_buffer_size 4K

fastcgi_buffers contrôle nginx pour créer jusqu'à 8 tampons de taille 4K ; , et fastcgi_buffer_size est la taille du premier tampon lors du traitement de la réponse, qui n'est pas inclus dans le premier. Ainsi, la taille totale maximale de la mémoire tampon pouvant être créée est de 84 Ko + 4 Ko = 36 Ko. Ces tampons sont générés dynamiquement en fonction de la taille réelle de la réponse et ne sont pas créés en même temps. Par exemple, pour une page de 8 Ko, Nginx créera un total de 2 buffers de 24 Ko.

Lorsque la Réponse est inférieure ou égale à 36k, toutes les données seront bien entendu traitées en mémoire. Que se passe-t-il si la réponse est supérieure à 36 Ko ? C'est ce que fait fastcgi_temp. Les données supplémentaires seront temporairement écrites dans le fichier et placées dans ce répertoire.

36 Ko sont mis en mémoire tampon et le reste sera écrit dans le fichier. La situation réelle est que l'utilisateur exécutant Nginx Process ne dispose pas d'autorisations d'écriture sur le répertoire fastcgi_temp, les données restantes sont donc perdues.

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!

Étiquettes associées:
php
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