Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die PHP-Funktion – curl_multi_select(): Warten Sie, bis die aktuell aktive cURL-Übertragung abgeschlossen ist

Einführung in die PHP-Funktion – curl_multi_select(): Warten Sie, bis die aktuell aktive cURL-Übertragung abgeschlossen ist

王林
王林Original
2023-07-24 23:31:521328Durchsuche

Einführung in die PHP-Funktion – curl_multi_select(): Warten Sie, bis die aktuell aktive cURL-Übertragung abgeschlossen ist.

Einführung

In PHP ist die Verwendung der cURL-Bibliothek zum Senden von HTTP-Anfragen ein sehr häufiger Vorgang. Wenn wir mehrere HTTP-Anfragen gleichzeitig bearbeiten müssen, können wir dies mit der Bibliothek „curl_multi“ erreichen. Bei Verwendung der Bibliothek „curl_multi“ müssen wir häufig warten, bis die aktuell aktive cURL-Übertragung abgeschlossen ist. Zu diesem Zeitpunkt können Sie die Funktion curl_multi_select() verwenden.

Funktionsdefinition

curl_multi_select(resource $mh[, float $timeout])

Parameterbeschreibung

  • $mh: cURL-Batch-Handle, auf das gewartet werden soll.
  • $timeout: Optionaler Parameter, geben Sie das Wartezeitlimit an. Wenn es auf 0 gesetzt ist, wird es sofort zurückgegeben.

Funktion Funktion

Die Funktion „curl_multi_select()“ wartet auf den Abschluss der aktuell aktiven cURL-Übertragung und gibt die Anzahl der lesbaren Handles zurück. Durch den Aufruf dieser Funktion bleibt unser Skript während des Wartens aktiv.

Beispiel

$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); // 等待当前活动的cURL传输完成
    }
} while ($active && $status == CURLM_OK);

// 处理完所有请求后,关闭cURL句柄
foreach ([$ch1, $ch2] as $ch) {
    curl_multi_remove_handle($mh, $ch);
    curl_close($ch);
}

curl_multi_close($mh);

In diesem Beispiel erstellen wir einen Curl_multi-Griff und fügen zwei Curl-Griffe hinzu. Anschließend verwenden wir eine Schleife, um darauf zu warten, dass die aktuell aktive cURL-Übertragung abgeschlossen ist. In jeder Schleife rufen wir die Funktion „curl_multi_exec()“ auf, um die cURL-Übertragung abzuwickeln und zu prüfen, ob aktive Übertragungen vorhanden sind. Wenn eine aktive Übertragung vorliegt, rufen wir die Funktion „curl_multi_select()“ auf, um zu warten und während des Wartens andere Aufgaben zu erledigen. Die Schleife wird ausgeführt, bis alle Übertragungen abgeschlossen sind und keine aktiven Übertragungen mehr vorhanden sind.

Abschließend schließen wir alle cURL-Handles und curl_multi-Handles, nachdem alle Anfragen verarbeitet wurden.

Zusammenfassung

Mit der Funktion „curl_multi_select()“ können wir warten, bis die aktuell aktive cURL-Übertragung abgeschlossen ist. Dadurch bleibt das Skript während des Wartens aktiv, was die Effizienz und Leistung mehrerer HTTP-Anfragen verbessert.

Hinweis: Stellen Sie bei Verwendung dieser Funktion bitte sicher, dass Fehler und Ausnahmen korrekt behandelt wurden, um zu verhindern, dass das Skript in einen unendlichen Wartezustand fällt.

Das obige ist der detaillierte Inhalt vonEinführung in die PHP-Funktion – curl_multi_select(): Warten Sie, bis die aktuell aktive cURL-Übertragung abgeschlossen ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn