Dans un environnement de demande multithread ou simultanée, Curl permet à différentes sessions Curl de partager certaines ressources. Par exemple, utilisez la fonction curl_share_init pour créer une poignée partagée et configurer plusieurs demandes Curl pour partager des pools de connexion ou des cookies via Curl_Setopt. Curlshopt_unshare est une option liée à une poignée partagée pour annuler le partage des ressources entre les sessions Curl.
Le rôle de Curlshopt_unshare est d'indiquer que Curl n'utilise plus de ressources partagées. Il peut être appliqué à différentes ressources telles que les cookies, le DNS, le SSL, etc. Cette option vous permet de ne pas paraître plusieurs demandes en fonction de vos besoins, afin que chaque demande puisse s'exécuter indépendamment.
Tout d'abord, nous devons initialiser une poignée de ressources partagée à l'aide de la fonction Curl_share_Init. Ensuite, configurez le partage des ressources via la fonction curl_setopt et enfin annuler le partage via curlshopt_unshare.
// Initialiser une poignée partagée
$sh = curl_share_init();
// Définir le type de ressource partagé(Si partagé Cookie)
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
Dans cette étape, nous créons une poignée partagée $ sh et définissons le type de ressource partagé. Par exemple, nous choisissons ici de partager des cookies (curl_lock_data_cookie).
// initialisation cURL Session 1
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, 'http://m66.net/page1');
curl_setopt($ch1, CURLOPT_SHARE, $sh);
// initialisation cURL Session 2
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://m66.net/page2');
curl_setopt($ch2, CURLOPT_SHARE, $sh);
// Exécuter une demande
curl_exec($ch1);
curl_exec($ch2);
Dans cette étape, nous créons deux sessions Curl $ CH1 et $ CH2 et leur permettons de partager des ressources dans $ sh (par exemple, les cookies de partage) via Curl_Setopt ($ ch, curlopt_share, $ sh) . À ce stade, les deux demandes partagent le même cookie.
Si, dans certains cas, nous devons déposer, nous pouvons utiliser Curlshopt_unshare.
// Annuler le partage Cookie
curl_share_setopt($sh, CURLSHOPT_UNSHARE, CURL_LOCK_DATA_COOKIE);
// En créer un nouveau cURL Session,Ressources indépendantes
$ch3 = curl_init();
curl_setopt($ch3, CURLOPT_URL, 'http://m66.net/page3');
curl_exec($ch3);
Dans cette étape, nous avons annulé le cookie partagé par curl_share_setopt ($ sh, curlshopt_unshare, curl_lock_data_cookie) . La prochaine session Curl (comme $ CH3 ) ne partagera plus de cookies avec la session précédente.
Portée sans partage : Curlshopt_unshare annule le partage uniquement de certains types de ressources, tels que les cookies, DNS ou SSL. Vous pouvez choisir d'annuler le partage d'un certain type de ressource en fonction des besoins réels.
Le cycle de vie d'une poignée partagée : l'annulation d'une ressource partagée ne détruit pas la poignée partagée. Si vous n'avez plus besoin d'une poignée partagée, vous pouvez détruire la poignée partagée via la fonction curl_share_cleanup.
Impact des demandes simultanées : dans le cas des demandes multipliées ou simultanées, l'utilisation rationnelle de Curlshopt_unshare peut éviter le partage de données inutile entre les différentes demandes, améliorant ainsi la flexibilité et la sécurité du système.
Curlshopt_unshare est une option de curl très pratique qui peut nous aider à annuler le partage des ressources entre plusieurs sessions Curl. En utilisant rationnellement curl_share_init et curl_setopt pour configurer les ressources partagées, l'utilisation des ressources peut être gérée efficacement. Dans les applications pratiques, décider d'annuler le partage des ressources en fonction des besoins peut améliorer la flexibilité et les performances du programme.