Position actuelle: Accueil> Derniers articles> Comment partager l'état d'authentification et les séances de connexion entre les demandes

Comment partager l'état d'authentification et les séances de connexion entre les demandes

M66 2025-05-24

curl_share_init () est une fonction fournie par l'extension curl php pour initialiser un objet partagé de session Curl. Avec cet objet, nous pouvons partager les données de session entre différentes demandes de curl. Surtout lorsque vous faites des demandes qui nécessitent une authentification, ces données de session partagées peuvent réduire considérablement les opérations de connexion en double et améliorer l'efficacité du programme.

 $ch_share = curl_share_init();

Le code ci-dessus initialise un objet de ressource partagé $ ch_share , que vous pouvez ensuite associer à plusieurs sessions Curl pour partager certaines informations.

2. Utilisez curl_share_setopt () pour définir des options de partage

Une fois que vous avez créé un objet partagé, vous pouvez définir les informations à partager via curl_share_setopt () . Les données partagées communes incluent:

  • Curl_share_cookie : cookies partagés

  • Curl_share_header : partager les informations d'en-tête

  • Curl_share_request : partager les informations de demande

 curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

Avec les paramètres ci-dessus, plusieurs demandes peuvent partager des données de cookie, ce qui est essentiel pour maintenir l'état de connexion.

3. Partagez la session dans plusieurs demandes de curl

Une fois l'objet partagé initialisé et que les options pertinentes sont définies, nous pouvons utiliser cette ressource partagée dans différentes demandes de curl. Tout d'abord, créez plusieurs sessions Curl et liez l'objet de ressource partagé à chaque session.

 $ch1 = curl_init();
$ch2 = curl_init();

// Lier une ressource partagée à cURL Session
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);

// Définir demandé URL(Remplacez-le par la demande réelle)
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/data');

// Exécuter une demande
curl_exec($ch1);
curl_exec($ch2);

// 关闭Session
curl_close($ch1);
curl_close($ch2);

Dans l'exemple ci-dessus, $ CH1 et $ CH2 partagent l'état d'authentification et les informations sur les cookies, afin qu'ils puissent tous deux utiliser la même session de connexion.

4. Libérer les ressources partagées

Lorsque toutes les séances de boucle sont terminées, n'oubliez pas de libérer des ressources partagées pour éviter les fuites de mémoire:

 curl_share_close($ch_share);

5. Exemple d'utilisation: État d'authentification partagée

Supposons que nous devons accéder à plusieurs points de terminaison de l'API après la connexion et rester connecté. Nous pouvons partager l'état d'authentification et les informations sur les cookies via curl_share_init () et curl_share_setopt () . Voici un exemple complet:

 <?php
// Initialiser les ressources partagées
$ch_share = curl_share_init();

// Définir les options de partage(commun Cookie)
curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

// Créez le premier cURL Session(Demande de connexion)
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, [
    'username' => 'your_username',
    'password' => 'your_password'
]);

// 执行Demande de connexion
$response1 = curl_exec($ch1);

// Créer une seconde cURL Session(Obtenir des données)
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/userdata');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);

// Effectuer des demandes de données
$response2 = curl_exec($ch2);

// Résultat de sortie
echo $response1;
echo $response2;

// 关闭Session
curl_close($ch1);
curl_close($ch2);

// 释放commun资源
curl_share_close($ch_share);
?>

Dans cet exemple, la demande de connexion et la demande de données partagent l'état d'authentification et les cookies, de sorte que les opérations de connexion en double peuvent être évitées.

Résumer

Avec curl_share_init () et curl_share_setopt () , nous sommes en mesure de partager l'état d'authentification et les informations de session entre plusieurs demandes Curl, améliorant considérablement l'efficacité lorsque plusieurs demandes. Dans les scénarios où des appels API complexes ou lorsque vous devez rester connecté, cette méthode peut aider les développeurs à réduire les opérations d'authentification en double inutiles et à gagner du temps et des ressources.