3 votes

comment faire en sorte que curl réutilise une connexion existante

curl --verbose google.com

Si j'exécute cette commande, après que curl ait fait son travail, le message suivant apparaît : "Connection #0 to host google.com left intact".

Mais il n'utilise pas la même connexion si j'exécute la même commande juste après. Comment faire pour que curl réutilise la même connexion dans la deuxième commande ?

Remarque : Je ne veux pas utiliser cette commande ci-dessous, car je dois effectuer des opérations de script bash entre deux requêtes :

curl --verbose google.com --next google.com

2voto

gh0st Points 21

En cherchant sur Google, j'ai trouvé quelques réponses et articles intéressants concernant votre question. Principalement la deuxième réponse donnée dans https://stackoverflow.com/a/18047230/2901077 peut vous aider à comprendre non seulement comment utiliser la réutilisation des ports avec libcurl, mais aussi quand l'utiliser.

Utiliser le cURL_init implémentée avec PHP, pour ouvrir une connexion et les liens incluent des références aux deux autres fonctions (curl_setopt & curl_exec) pour pouvoir potentiellement réutiliser une poignée existante (conncetion).

En passant, cette réponse, https://stackoverflow.com/a/982556/2901077 indique comment cURL traite les requêtes nouvelles ou existantes. https://stackoverflow.com/a/15047105/2901077 es les réponse cependant.

0voto

Bemipefe Points 181

Qu'en est-il de l'enregistrement des cookies lors de la première demande et de leur réutilisation lors de la deuxième demande ?

Cela a résolu le problème pour moi. Vous pouvez utiliser

  • --dump-header mysession_cookies o --cookie-jar pour sauvegarder les cookies. La seconde fusionnera les cookies chargés (le cas échéant) avec les cookies reçus.

  • --cookie mysession_cookies pour charger les cookies lors des prochaines demandes

Voir plus de détails dans ce document discussion . Vous n'utilisez donc pas la même session TCP, mais du point de vue HTTP, cela ressemble à ceci.

Si vous souhaitez réutiliser la même session TCP pour envoyer des paquets, vous avez besoin d'un logiciel spécifique tel que haproxy qui joue le rôle de mélangeur. C'est-à-dire qu'il accepte vos requêtes et maintient une connexion ouverte avec le serveur. Voir ce qui suit discussion pour plus de détails.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X