Curlopt_returntransfer est une option dans la bibliothèque Curl et est généralement utilisé pour définir la méthode de retour des demandes de curl. Lorsque cette option est définie sur true , le résultat de la demande Curl n'est pas sorti directement vers le navigateur ou la console, mais est renvoyé sous forme de chaîne. De cette façon, les développeurs peuvent capturer et traiter davantage les données renvoyées via le code PHP, au lieu de faire afficher directement le contenu du contenu.
Utilisation de base:
<span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span></span>
Lorsque vous utilisez CURL_MULTI_EXEC pour effectuer plusieurs demandes Curl, vous devez généralement définir des options spécifiques pour chaque demande. À l'heure actuelle, vous pouvez définir des options pour chaque session CURL via Curl_Multi_Setopt , y compris Curlopt_returntransfer .
<span><span><span class="hljs-comment">// Initialiser multiple cURL Session</span></span><span>
</span><span><span class="hljs-variable">$ch1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.com"</span></span><span>);
</span><span><span class="hljs-variable">$ch2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_init</span></span><span>(</span><span><span class="hljs-string">"http://example.org"</span></span><span>);
</span><span><span class="hljs-comment">// Options de réglage</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_setopt</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>, CURLOPT_RETURNTRANSFER, </span><span><span class="hljs-literal">true</span></span><span>);
</span><span><span class="hljs-comment">// Initialiser le multithreading cURL Session</span></span><span>
</span><span><span class="hljs-variable">$mh</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_init</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_add_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// Exécuter une demande</span></span><span>
</span><span><span class="hljs-variable">$running</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>;
</span><span><span class="hljs-keyword">do</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">curl_multi_exec</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$running</span></span><span>);
} </span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$running</span></span><span>);
</span><span><span class="hljs-comment">// Obtenir des résultats</span></span><span>
</span><span><span class="hljs-variable">$response1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-variable">$response2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">curl_multi_getcontent</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-comment">// Résultat de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response1</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$response2</span></span><span>;
</span><span><span class="hljs-comment">// fermeture cURL Session</span></span><span>
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_remove_handle</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>, </span><span><span class="hljs-variable">$ch2</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_multi_close</span></span><span>(</span><span><span class="hljs-variable">$mh</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch1</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">curl_close</span></span><span>(</span><span><span class="hljs-variable">$ch2</span></span><span>);
</span></span>
Dans cet exemple, nous définissons Curlopt_returntransfer sur true pour chaque session CURL afin que les données de réponse pour chaque demande soient renvoyées sous forme de chaîne au lieu d'être sortis directement au navigateur ou à la console. De cette façon, vous pouvez collecter le contenu de réponse de chaque demande lors du traitement de plusieurs demandes.
La fonction de curlopt_returntransfer consiste à contrôler le comportement de sortie des demandes Curl:
Défini sur true : le contenu renvoyé sera renvoyé sous forme de chaîne, et le développeur peut traiter davantage le contenu renvoyé (tel que l'analyse, le stockage, la sortie, etc.). Il s'agit du paramètre recommandé dans la plupart des cas, en particulier lorsque vous exécutez plusieurs demandes, vous devez traiter les résultats de chaque demande.
Défini sur False : la demande de curl sortira le contenu directement sur le navigateur ou la console. À ce stade, vous ne pouvez pas capturer directement les résultats de la réponse dans votre code, généralement lorsque vous utilisez des demandes de GET simples ou le téléchargement de fichiers.
Chaque poignée Curl doit être définie: Lorsque vous utilisez Curl_Multi_Setopt pour gérer plusieurs demandes, chaque poignée Curl individuelle doit être définie sur curlopt_returntransfer . Cette option est définie pour certaines demandes même si elles n'ont pas besoin de renvoyer du contenu.
Traitement du contenu de la réponse: Dans les demandes multipliques, vous devez généralement obtenir le contenu de réponse de chaque demande via curl_multi_getContent () après que toutes les demandes ont été exécutées. Assurez-vous que les résultats de retour de chaque session Curl sont traités une fois la demande terminée.
Débogage: si vous constatez qu'une partie du contenu retourné dans la demande multithread ne répond pas aux attentes, vous pouvez temporairement définir Curlopt_returntransfer sur False pour observer s'il s'agit d'une exception causée par des problèmes de configuration de Curl.
Obtenez des données de réponse pour plusieurs API: la configuration de plusieurs demandes d'API et les exécuter simultanément peuvent améliorer considérablement l'efficacité. Curlopt_returntransfer est utilisé pour capturer la réponse de chaque demande et effectuer un traitement ultérieur.
Fichier de téléchargement par lots: lors du téléchargement de fichiers en lots, vous pouvez utiliser Curlopt_returntransfer pour renvoyer le contenu du fichier sous forme de chaîne ou de flux binaire pour éviter la sortie directe vers le navigateur et faciliter les opérations de sauvegarde ultérieures.
Crawler: Pour les robots de robots qui ont besoin de ramper plusieurs pages Web, Curlopt_returntransfer est une configuration très importante, ce qui vous aide à capturer le contenu HTML de chaque demande, l'analyse et le stocker.
La définition correcte du paramètre Curlopt_returntransfer est essentielle à la progression fluide des demandes de curl multithread. En définissant ce paramètre sur true , vous pouvez capturer efficacement le contenu de la réponse de chaque demande, le traiter ou le stocker dans le programme. Lorsque vous utilisez CURL_MULTI_SETOPT , assurez-vous que cette option est définie correctement pour chaque poignée CURL pour un traitement efficace des données.
Comprendre et appliquer de manière flexible ces options dans le développement réel vous permettra d'obtenir de meilleures performances et contrôler lors de la gestion des demandes simultanées.