Beim Schreiben von PHP -Skripten für HTTP -Anfragen ist Curl ein sehr wichtiges Tool, insbesondere wenn wir mehrere Anforderungen des Browsers simulieren müssen, wie man angemeldet oder eine Sitzung geteilt wird. Curl bietet eine sehr nützliche Funktion curl_share_init () , mit der wir Cookies in mehreren Curl -Sitzungen teilen können, wodurch jedes Mal, wenn eine Anfrage gesendet wird, erneut anmeldet, wodurch die Wiederverwendungseffizienz des Anmeldezustands erheblich verbessert wird.
curl_share_init () ist eine Funktion in PHP, die einen gemeinsam genutzten Griff erstellt. Mit freigegebenen Handles können mehrere Curl -Sitzungen dieselben Ressourcen wie Cookies, Sitzungsdaten usw. freigeben. Mit dieser Funktion können wir dieselben Cookie -Informationen in verschiedenen HTTP -Anfragen teilen, was für einen konsistenten Anmeldezustand zwischen mehreren Anforderungen nützlich ist.
Im folgenden Beispiel werden wir demonstrieren, wie man curl_share_init () verwendet, um Cookies zu teilen und die Wiederverwendungseffizienz mehrerer Anforderungen zu verbessern.
<?php
// Erstellen Sie einen gemeinsam genutzten Griff
$share = curl_share_init();
// Konfiguration cURL Optionen,Verwenden eines gemeinsam genutzten Griffs
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://m66.net/login.php"); // AnmeldeseiteURL
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIEJAR, "cookie.txt"); // halten Cookie
curl_setopt($ch1, CURLOPT_SHARE, $share); // Ressourcen teilen
$response1 = curl_exec($ch1); // Führen Sie die erste Anfrage aus,Anmeldevorgang
curl_close($ch1);
// Erstellen Sie eine Sekunde cURL Sitzung,Nutzen Sie frühere gemeinsame Griffe
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "http://m66.net/dashboard.php"); // Seiten, die vor dem Zugriff angemeldet werden müssen
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_SHARE, $share); // Verwenden Sie den gleichen gemeinsam genutzten Griff
$response2 = curl_exec($ch2); // Führen Sie die zweite Anfrage aus,Holen Sie sich die Seite Personal Informationen des Benutzers
curl_close($ch2);
// Das Ergebnis der zweiten Anfrage ausgeben
echo $response2;
// Schließen Sie den gemeinsamen Griff
curl_share_close($share);
?>
Erstellen Sie einen gemeinsam genutzten Griff :
Verwenden Sie curl_share_init () , um ein Handle für eine gemeinsam genutzte Ressource $ Share zu erstellen. Dieser gemeinsame Griff wird verwendet, um Cookies und andere Daten zwischen verschiedenen Curl -Sitzungen zu teilen.
Die erste Anfrage: Login :
Wir verwenden curl_init () , um die erste Curl -Sitzung $ CH1 zu erstellen und die URL der Anmeldeseite festzulegen (vorausgesetzt, sie ist http://m66.net/login.php hier). Wir verwenden auch curlopt_cookiejar , um eine Datei ( cookie.txt ) zum Speichern von Cookies anzugeben, damit nachfolgende Anforderungen diese Cookies weiterhin verwenden können.
Die zweite Anfrage: Benutzerinformationen erhalten :
Erstellen Sie eine zweite Curl -Sitzung $ CH2 und setzen Sie die Seiten -URL ein, die angemeldet werden muss (z. B. http://m66.net/dashboard.php ). Durch das Einstellen von Curlopt_Share als Shared -Griff $ Share stellen wir sicher, dass diese Anfrage die Cookies in der ersten Anfrage zur Wiederverwendung des Anmeldestatus verwendet.
Schließen Sie den gemeinsam genutzten Griff :
Nach Abschluss der Anfrage verwenden wir curl_share_close () , um das gemeinsame Griff $ Share zu schließen und die Ressource freizugeben.
Verbesserung der Effizienz : Durch das Teilen von Cookies vermeiden Sie jedes Mal, wenn Sie anfordern, erneut ein Anmeldung, wodurch unnötige Anforderungsaufwand reduziert wird.
Bequemes Verwalten von Sitzungen : curl_share_init () ermöglicht mehrere Anforderungen, dieselben Sitzungsdaten zu teilen, sodass es für langjährige Sitzungszustände bequem ist.
Vereinfachter Code : Durch die Freigabe von Ressourcen wird der Code prägnanter und bequemer zu warten.
Ressourcenmanagement : Obwohl gemeinsame Griffe viel Bequemlichkeit bieten, sollte beachtet werden, dass das von Curl_Share_init () erstellte gemeinsame Handlungsgriff eine bestimmte Systemressource belegt. Nach Abschluss der Verwendung müssen Sie sich daher daran erinnern, Curl_Share_Close () aufzurufen, um die Ressourcen zu veröffentlichen.
Cookie -Pfad und Domänenname : Stellen Sie sicher, dass der Speicherpfad von Cookie -Dateien mit dem Domänennamen übereinstimmt, und vermeiden Sie die Interferenz von Cookie -Daten zwischen verschiedenen Domain -Namen. Wenn Sie Anfragen unter verschiedenen Domainnamen senden, konfigurieren Sie die Cookie -Datei angemessen.
Gleichzeitige Anfragen : Wenn Sie vorhaben, gleichzeitige Anfragen zu stellen, können Sie mit Curl_Share_init () Cookie -Daten freigeben. Sie müssen jedoch weiterhin vorsichtig sein, wenn gleichzeitige Anfragen zur Verhinderung von Synchronisationsproblemen vorhanden sind.