In PHP ist Curl ein sehr leistungsfähiges Werkzeug für die Durchführung von HTTP -Anforderungen über URL. Es kann Get, Postanfragen und viele andere HTTP-bezogene Operationen behandeln. DNS-Abfragen sind jedoch häufig eine der Leistungsengpässe bei mehreren HTTP-Anforderungen, insbesondere bei hochfrequenten Anfragen. Um die Wiederholung von DNs für jede Anforderung zu vermeiden, bietet PHP eine Funktion curl_share_init () für die DNS-Cache-Freigabe, wodurch die Leistung von PHP-Anwendungen verbessert wird.
curl_share_init () ist eine Funktion, mit der freigegebene Ressourcen initialisiert werden. Shared Ressourcen können verwendet werden, um Daten zwischen mehreren Lockensitzungen, insbesondere DNS -Caches, zu teilen. Durch das Teilen von DNS -Cache können mehrere COLL -Anforderungen doppelte DNS -Abfragen vermeiden, wodurch die Anwendungsleistung verbessert wird.
resource curl_share_init ( void )
Die Funktion hat keine Eingabeparameter und gibt ein Curl Shared -Handle ( curl_share_handle ) zurück. Dieser gemeinsame Griff wird verwendet, um zwischengespeicherte Daten zwischen verschiedenen Curl -Sitzungen zu teilen.
In Ermangelung eines gemeinsam genutzten Cache führt Curl bei jeder Anfrage eine DNS -Abfrage durch, was zu einer Erhöhung der Latenz führt. Insbesondere wenn Sie mehrere Anfragen nach demselben Domänennamen stellen, kann die Wiederholung von DNS -Abfragen viel Zeit verschwenden. Durch die Aktivierung von DNS -Cache -Teilen kann der Overhead der DNS -Auflösung erheblich reduziert werden, wodurch die Reaktionsgeschwindigkeit von PHP -Anwendungen erhöht wird.
Zunächst wird curl_share_init () aufgerufen, um die gemeinsame Ressource zu initialisieren.
$share = curl_share_init();
Verwenden Sie nach der Initialisierung des Share -Handels curl_share_setopt () , um die DNS -Cache -Freigabe zu aktivieren. Die Option curlshopt_share gibt den zu gemeinsam genutzten Ressourcentyp an, während curl_lock_data_dns zum Teilen des DNS -Cache verwendet wird.
curl_share_setopt($share, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
Erstellen Sie dann mehrere Curl -Sitzungen und binden Sie die gemeinsam genutzten Griffe an sie.
$ch1 = curl_init('http://m66.net');
curl_setopt($ch1, CURLOPT_SHARE, $share);
$ch2 = curl_init('http://m66.net');
curl_setopt($ch2, CURLOPT_SHARE, $share);
Nach dem Einrichten aller Curl -Sitzungen können Sie Anforderungen separat ausführen.
curl_exec($ch1);
curl_exec($ch2);
Stellen Sie nach Abschluss der Anfrage sicher, dass Sie alle Curl -Sitzungen und gemeinsam genutzten Ressourcen schließen.
curl_close($ch1);
curl_close($ch2);
curl_share_close($share);
Hier ist ein vollständiges Beispiel, das demonstriert, wie die DNS -Cache -Freigabe mithilfe der Funktion curl_share_init () implementiert wird: