Aktueller Standort: Startseite> Neueste Artikel> Ausführliche Erklärung der PHP-Funktion „curl_multi_select()“: Effizientes Warten auf den Abschluss gleichzeitiger Anforderungen

Ausführliche Erklärung der PHP-Funktion „curl_multi_select()“: Effizientes Warten auf den Abschluss gleichzeitiger Anforderungen

M66 2025-10-10

Einführung in die PHP-Funktion curl_multi_select()

In der PHP-Entwicklung ist die Verwendung der cURL-Bibliothek zum Senden von HTTP-Anfragen eine gängige Methode. Wenn das Projekt mehrere HTTP-Anforderungen gleichzeitig verarbeiten muss, kann die Funktionsreihe curl_multi die Ausführungseffizienz effektiv verbessern. Um auf den Abschluss der aktuell aktiven cURL-Übertragung zu warten, können wir die Funktion „curl_multi_select()“ verwenden, um einen effizienteren Wartemechanismus zu implementieren.

Funktionsdefinition

 <span class="fun">curl_multi_select(resource $mh[, float $timeout])</span>

Parameterbeschreibung

  • $mh : cURL-Batch-Handle, auf das gewartet werden soll.
  • $timeout : Optionaler Parameter, der das Wartezeitlimit angibt (Einheit: Sekunden). Wenn es auf 0 gesetzt ist, wird es sofort zurückgegeben.

Funktionseffekt

Die Funktion „curl_multi_select()“ wird verwendet, um auf den Abschluss der aktuell aktiven cURL-Übertragung zu warten und die Anzahl der lesbaren Handles zurückzugeben. Durch diese Funktion kann das Skript aktiv bleiben, während es auf eine Netzwerkantwort wartet, wodurch die Gesamtausführungseffizienz verbessert wird.

Beispielcode

 $mh = curl_multi_init();

$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, "https://example.com/api/request1");
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch1);

$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, "https://example.com/api/request2");
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $ch2);

do {
    $status = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh); // Warten auf derzeit aktivcURLÜbertragung abgeschlossen
    }
} while ($active && $status == CURLM_OK);

// Nachdem alle Anfragen bearbeitet wurden,SchließungcURLhandhaben
foreach ([$ch1, $ch2] as $ch) {
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

curl_multi_close($mh);

Codebeschreibung

Im obigen Beispiel haben wir zunächst ein Curl_multi-Batch-Handle erstellt und ihm zwei unabhängige Curl-Anfragen hinzugefügt. Verwenden Sie dann „curl_multi_exec()“, um den Übertragungsprozess auszuführen, und warten Sie, bis die aktuell aktive Anforderung über die Funktion „curl_multi_select()“ abgeschlossen ist. Die Schleife wird fortgesetzt, bis alle Anfragen verarbeitet wurden. Abschließend bereinigen und schließen wir alle relevanten Handles, um Systemressourcen freizugeben.

Nutzungsvorschläge

Durch die Verwendung von curl_multi_select() kann die Verarbeitungsleistung gleichzeitiger HTTP-Anfragen erheblich verbessert werden. In der tatsächlichen Entwicklung wird empfohlen, Zeitüberschreitungen und Ausnahmen während der Wartezeit angemessen zu behandeln, um zu vermeiden, dass das Skript in einen unendlichen Wartezustand gerät. Darüber hinaus kann die Funktion „curl_multi_info_read()“ kombiniert werden, um den Rückgabestatus jeder Anfrage für eine detailliertere Fehlerbehandlung abzurufen.

Zusammenfassen

curl_multi_select() ist eine der wichtigen Funktionen in PHP für die gleichzeitige Verarbeitung mehrerer Anfragen. Durch die richtige Verwendung können Entwickler Skripte aktiv halten, während sie auf Netzwerkantworten warten, wodurch die Effizienz der Anwendungsantworten und das Benutzererlebnis erheblich verbessert werden.