Position actuelle: Accueil> Derniers articles> Utilisez curl_share_init () pour partager les cookies pour améliorer l'efficacité de la réutilisation de l'état de connexion

Utilisez curl_share_init () pour partager les cookies pour améliorer l'efficacité de la réutilisation de l'état de connexion

M66 2025-05-19

Lors de la rédaction de scripts PHP pour les demandes HTTP, Curl est un outil très important, surtout lorsque nous devons simuler plusieurs demandes du navigateur, comment rester connecté ou partager une session devient particulièrement importante. Curl fournit une fonction très utile curl_share_init () , qui peut nous aider à partager des cookies dans plusieurs sessions Curl, en évitant à nouveau la connexion à chaque fois qu'une demande est envoyée, améliorant ainsi considérablement l'efficacité de réutilisation de l'état de connexion.

1. Présentation de la fonction curl_share_init ()

curl_share_init () est une fonction de PHP qui crée une poignée partagée. Les poignées partagées permettent à plusieurs sessions de couronnes de partager les mêmes ressources, telles que les cookies, les données de session, etc. L'utilisation de cette fonction nous permet de partager les mêmes informations sur les cookies dans différentes demandes HTTP, ce qui est utile pour un état de connexion cohérent entre plusieurs demandes.

Dans l'exemple suivant, nous montrerons comment utiliser Curl_share_Init () pour partager des cookies et améliorer l'efficacité de réutilisation de plusieurs demandes.

2. Exemple de code

 <?php

// Créer une poignée partagée
$share = curl_share_init();

// Configuration cURL Options,En utilisant une poignée partagée
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://m66.net/login.php");  // Page de connexionURL
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIEJAR, "cookie.txt");  // garder Cookie
curl_setopt($ch1, CURLOPT_SHARE, $share);  // Partager des ressources
$response1 = curl_exec($ch1);  // Effectuer la première demande,Opération de connexion
curl_close($ch1);

// Créer une seconde cURL Session,Profitez des poignées partagées précédentes
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://m66.net/dashboard.php");  // Les pages qui doivent être connectées avant l&#39;accès
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share);  // Utilisez la même poignée partagée
$response2 = curl_exec($ch2);  // Exécuter la deuxième demande,Obtenez la page d&#39;informations personnelles de l&#39;utilisateur
curl_close($ch2);

// Sortie le résultat de la deuxième demande
echo $response2;

// Fermez la poignée partagée
curl_share_close($share);
?>

3. Comment travailler

  1. Créez une poignée partagée :
    Utilisez curl_share_init () pour créer une poignée pour une part de ressource partagée $ . Cette poignée partagée est utilisée pour partager des cookies et d'autres données entre les différentes sessions de boucle.

  2. La première demande: Connexion :
    Nous utilisons Curl_Init () pour créer la première session Curl $ CH1 , en définissant l'URL de la page de connexion (en supposant qu'il s'agit de http://m66.net/login.php ici). Nous utilisons également Curlopt_cookiejar pour spécifier un fichier ( cookie.txt ) pour stocker des cookies afin que les demandes ultérieures puissent continuer à utiliser ces cookies.

  3. La deuxième demande: obtenir des informations utilisateur :
    Créez une deuxième session Curl $ CH2 , en définissant l'URL de la page qui doit être connectée (par exemple, http://m66.net/dashboard.php ). En définissant Curlopt_share en tant que partage partagée, nous nous assurons que cette demande utilisera les cookies dans la première demande pour réutiliser l'état de connexion.

  4. Fermez la poignée partagée :
    Une fois la demande terminée, nous utilisons curl_share_close () pour fermer la poignée partagée $ partage et libérer la ressource.

4. Avantages

  1. Améliorez l'efficacité : en partageant des cookies, évitez de vous connecter à nouveau chaque fois que vous demandez, en réduisant les frais généraux de demande inutile.

  2. Con pratique de la gestion des sessions : curl_share_init () permet à plusieurs demandes de partager les mêmes données de session, ce qui le rend pratique pour les états de session de longue date.

  3. Code simplifié : En partageant des ressources, le code devient plus concis et plus pratique à maintenir.

5. Choses à noter

  1. Gestion des ressources : Bien que les poignées partagées fournissent beaucoup de commodité, il convient de noter que la poignée partagée créée par curl_share_init () occupera une certaine ressource système. Par conséquent, une fois l'utilisation terminée, vous devez vous rappeler d'appeler Curl_share_close () pour libérer les ressources.

  2. Chemin de cookie et nom de domaine : assurez-vous que le chemin de stockage des fichiers cookies est cohérent avec le nom de domaine et évitez l'interférence des données de cookie entre les différents noms de domaine. Si vous envoyez des demandes sous différents noms de domaine, assurez-vous de configurer le fichier cookie de manière appropriée.

  3. Demandes simultanées : si vous prévoyez de faire des demandes simultanées, Curl_share_Init () vous permet de partager des données de cookie, mais vous devez toujours être prudent lorsque les demandes simultanées pour éviter les problèmes de synchronisation.