Aktueller Standort: Startseite> Neueste Artikel> So teilen Sie den Authentifizierungsstatus und Anmeldesitzungen zwischen Anfragen

So teilen Sie den Authentifizierungsstatus und Anmeldesitzungen zwischen Anfragen

M66 2025-05-24

curl_share_init () ist eine Funktion, die von der PHP -Curl -Erweiterung bereitgestellt wird, um ein Shared -Objekt mit Curl -Sitzungen zu initialisieren. Mit diesem Objekt können wir Sitzungsdaten zwischen verschiedenen Curl -Anfragen freigeben. Insbesondere bei Anfragen, die eine Authentifizierung erfordern, können diese gemeinsam genutzten Sitzungsdaten den doppelten Anmeldevorgängen erheblich reduzieren und die Effizienz des Programms verbessern.

 $ch_share = curl_share_init();

Der obige Code initialisiert ein freigegebenes Ressourcenobjekt $ ch_share , das Sie dann mit mehreren Curl -Sitzungen in Verbindung bringen können, um einige Informationen zu teilen.

2. Verwenden Sie CURL_SHARE_SETOPT () , um die Freigabeoptionen festzulegen

Sobald Sie ein gemeinsam genutztes Objekt erstellt haben, können Sie festlegen, welche Informationen über curl_share_setopt () freigegeben werden müssen. Zu den gemeinsamen gemeinsamen Daten gehören:

  • Curl_share_cookie : freigegebene Cookies

  • CURL_SHARE_HEADER : Header -Informationen teilen

  • Curl_share_request : Anforderungsinformationen teilen

 curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

Mit den oben genannten Einstellungen können mehrere Anforderungen Cookie -Daten freigeben, was für die Aufrechterhaltung des Anmeldestatus unerlässlich ist.

3. Teilen Sie die Sitzung in mehreren Curl -Anfragen

Sobald das freigegebene Objekt initialisiert und die entsprechenden Optionen festgelegt sind, können wir diese gemeinsam genutzte Ressource in verschiedenen Curl -Anforderungen verwenden. Erstellen Sie zunächst mehrere Curl -Sitzungen und binden Sie das gemeinsam genutzte Ressourcenobjekt an jede Sitzung.

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

// Binden Sie eine gemeinsame Ressource an an cURL Sitzung
curl_setopt($ch1, CURLOPT_SHARE, $ch_share);
curl_setopt($ch2, CURLOPT_SHARE, $ch_share);

// Gesetzt angefordert URL(Ersetzen Sie es durch die tatsächliche Anfrage)
curl_setopt($ch1, CURLOPT_URL, 'https://m66.net/api/login');
curl_setopt($ch2, CURLOPT_URL, 'https://m66.net/api/data');

// Eine Anfrage ausführen
curl_exec($ch1);
curl_exec($ch2);

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

Im obigen Beispiel haben $ CH1 und $ CH2 Authentifizierungsstatus und Cookie -Informationen, sodass beide dieselbe Anmeldesitzung verwenden können.

4. Veröffentlichung Shared Resources Ressourcen

Wenn alle Curl -Sitzungen abgeschlossen sind, denken Sie daran, gemeinsam genutzte Ressourcen freizugeben, um Speicherlecks zu vermeiden:

 curl_share_close($ch_share);

5. Nutzungsbeispiel: Shared Authentication Status

Angenommen, wir müssen nach der Anmeldung auf mehrere API -Endpunkte zugreifen und angemeldet bleiben. Wir können den Authentifizierungsstatus und Cookie -Informationen über Curl_Share_init () und curl_share_setopt () freigeben. Hier ist ein vollständiges Beispiel:

 <?php
// Initialisieren Sie gemeinsame Ressourcen
$ch_share = curl_share_init();

// Stellen Sie die Freigabeoptionen fest(geteilt Cookie)
curl_share_setopt($ch_share, CURL_SHARE_COOKIE, true);

// Erstellen Sie den ersten cURL Sitzung(Login -Anfrage)
$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'
]);

// 执行Login -Anfrage
$response1 = curl_exec($ch1);

// Erstellen Sie eine Sekunde cURL Sitzung(Daten abrufen)
$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);

// Datenanfragen durchführen
$response2 = curl_exec($ch2);

// Ausgangsergebnis
echo $response1;
echo $response2;

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

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

In diesem Beispiel teilen sich die Anmeldempfangsanforderung und die Datenanforderung den Authentifizierungsstatus und Cookies, sodass doppelte Anmeldevorgänge vermieden werden können.

Zusammenfassen

Mit curl_share_init () und curl_share_setopt () können wir den Authentifizierungsstatus und die Sitzungsinformationen zwischen mehreren CORL -Anforderungen freigeben und die Effizienz bei mehreren Anforderungen erheblich verbessern. In Szenarien, in denen komplexe API -Aufrufe oder wenn Sie angemeldet werden müssen, kann diese Methode den Entwicklern helfen, unnötige doppelte Authentifizierungsvorgänge zu reduzieren und Zeit und Ressourcen zu sparen.