Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie in CLI -Skripten curl_share_init () in CLI -Skripten, um mehrere API -Anforderungen zu verwalten

Verwenden Sie in CLI -Skripten curl_share_init () in CLI -Skripten, um mehrere API -Anforderungen zu verwalten

M66 2025-05-18

Beim Schreiben von PHP -CLI -Skripten, die eine große Anzahl von API -Anfragen erfordern, ist das rationale Management von Ressourcen und die Verbesserung der Leistung zu Problemen geworden, die Entwickler nicht ignorieren können. Insbesondere in Szenarien, in denen mehrere HTTP -Anfragen erforderlich sind, um gleichzeitig zu verarbeiten, können einige erweiterte Funktionen von CURL wie Curl_Share_init () helfen, Verbindungen wiederzuverwenden und Ressourcen in gewissem Maße zu teilen, wodurch die Effizienz der Gesamtausführung verbessert wird. In diesem Artikel wird in CLI -Skripten in CLI -Skripte in CLI -Skripte verwaltet.

1. Was ist curl_share_init ()?

curl_share_init () ist eine von PHP bereitgestellte Curl -Funktion zum Initialisieren eines gemeinsam genutzten Griffs. Mit diesem Handle können Sie DNS -Cache, SSL -Sitzungen, Cookies und andere Ressourcen zwischen mehreren Curl -Sitzungen teilen.

Zu den unterstützten Sharing -Optionen gehören:

  • Curlshopt_share :

    • Curl_lock_data_cookie : Cookie -Daten teilen.

    • Curl_lock_data_dns : freigegebener DNS -Cache.

    • CURL_LOCK_DATA_SSL_SESSION : Teilen Sie die SSL -Sitzung.

Diese Freigabeoptionen sind besonders nützlich, wenn Sie Schnittstellen desselben Host- oder Domain -Namens bei hoher Frequenz anfordern.

2. Grundlegende Schritte zur Verwendung von curl_share_init ()

Schauen wir uns ein tatsächliches Beispiel für PHP -CLI -Skript an, das mehrere gleichzeitige APIs für die gleichzeitige Anforderung simuliert und Curl_Share_init () verwendet, um die Leistung zu verbessern.

 <?php

$urls = [
    "https://m66.net/api/endpoint1",
    "https://m66.net/api/endpoint2",
    "https://m66.net/api/endpoint3",
    "https://m66.net/api/endpoint4"
];

// Initialisieren Sie den gemeinsam genutzten Griff
$sh = curl_share_init();

// Setzen Sie den Freigabentyp
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS);
curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION);

$multiHandle = curl_multi_init();
$curlHandles = [];

foreach ($urls as $url) {
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SHARE => $sh,
        CURLOPT_USERAGENT => "PHP-Curl-Client"
    ]);
    curl_multi_add_handle($multiHandle, $ch);
    $curlHandles[] = $ch;
}

// Multi-Thread-Anfragen ausführen
$active = null;
do {
    $mrc = curl_multi_exec($multiHandle, $active);
    curl_multi_select($multiHandle);
} while ($active > 0);

// Verarbeitungsergebnisse
foreach ($curlHandles as $ch) {
    $response = curl_multi_getcontent($ch);
    $info = curl_getinfo($ch);
    echo "URL: " . $info['url'] . "\n";
    echo "HTTP Code: " . $info['http_code'] . "\n";
    echo "Response: " . substr($response, 0, 100) . "...\n\n";

    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// Ressourcen aufräumen
curl_share_close($sh);
curl_multi_close($multiHandle);

3. Leistungsvergleich und Ressourcenoptimierung

Die Vorteile der Verwendung von curl_share_init () sind in den folgenden Aspekten besonders deutlich:

  1. DNS -Cache -Wiederverwendung <br> Vermeiden Sie es, den Domain-Namen jedes Mal erneut aufzubauen, wenn Sie anfordern, und speichern Sie die DNS-Abfragezeit.

  2. SSL Session Multiplexing <br> Bei HTTPS -Anfragen können Multiplexing -SSL -Sitzungen die Latenz des Handschlags erheblich verringern.

  3. Cookie Sharing <br> Teilen Sie den Anmeldestatus, die Verfolgung von Informationen usw. unter mehreren Anfragen zur Verbesserung der Konsistenz und Effektivität von Anfragen.

  4. Speicherverbrauchsoptimierung <br> Mehrere Verbindungen teilen einige Ressourcen, die den Speicheraufwand effektiv reduzieren können.

4. Vorschläge für den Gebrauch

Obwohl curl_share_init () leistungsstark ist, sind nicht alle Szenarien für die Verwendung geeignet. Hier sind einige typische Szenarien empfohlen:

  • Bulk fordert mehrere Schnittstellen unter demselben Domänennamen an.

  • Die Hochfrequenz-Schnittstellensynchronisation wird in CLI-Tools durchgeführt.

  • Backend -Service -Skripte wie Crawler, Datenerfassung usw.

In einer Webumgebung (z. B. im FPM -Modus) wird nicht empfohlen, einen gemeinsam genutzten Griff zu verwenden, da die Ressource nicht sicher zwischen gleichzeitigen Prozessen geteilt werden kann, was zu Konflikten oder Fehlern führen kann.

Abschluss

Durch die rationalere Verwendung von Curl_Share_init () können PHP-CLI-Skripte Multi-Request-Aufgaben effizienter verwalten, was nicht nur die Ausführungsgeschwindigkeit verbessert, sondern auch Systemressourcen spart. Dies ist eine wertvolle Optimierungsmethode für CLI -Tools, die eine häufige Kommunikation mit externen APIs erfordern. Das Mastering und Anwenden dieser fortschrittlichen Curl-Technologien verbessert Ihre Wettbewerbsfähigkeit beim Aufbau leistungsstarker PHP-Skripte erheblich.