Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich parallele cURL-Anfragen ausführen, um Daten von mehreren URLs effizient in PHP abzurufen?

Wie kann ich parallele cURL-Anfragen ausführen, um Daten von mehreren URLs effizient in PHP abzurufen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-16 22:41:03565Durchsuche

How Can I Execute Parallel cURL Requests to Retrieve Data from Multiple URLs Efficiently in PHP?

PHP: So führen Sie parallele cURL-Anfragen aus

Wenn Sie mit Situationen zu tun haben, in denen Sie Daten von mehreren URLs effizient abrufen müssen, verwenden Sie parallele cURL-Anfragen zur Notwendigkeit werden. Betrachten wir in diesem Zusammenhang Ihr Szenario, in dem Sie JSON-Daten von 15 verschiedenen URLs mit file_get_contents($url) abrufen möchten.

Ihr aktueller Ansatz, der eine einfache Schleife für sequentielle Anfragen verwendet, kann aufgrund von zu erheblichen Verlangsamungen führen die synchrone Natur von file_get_contents. Das bedeutet, dass das Skript warten muss, bis jede Anfrage abgeschlossen ist, bevor es mit der nächsten fortfährt.

Um dieses Problem zu lösen, können wir Multi-cURL-Anfragen nutzen. So können Sie dies erreichen:

$nodes = array($url1, $url2, $url3);
$node_count = count($nodes);

$curl_arr = array();
$master = curl_multi_init();

for ($i = 0; $i < $node_count; $i++) {
    $url = $nodes[$i];
    $curl_arr[$i] = curl_init($url);
    curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
    curl_multi_add_handle($master, $curl_arr[$i]);
}

do {
    curl_multi_exec($master, $running);
} while ($running > 0);

for ($i = 0; $i < $node_count; $i++) {
    $results[] = curl_multi_getcontent($curl_arr[$i]);
}

print_r($results);

Dieses Skript erstellt einen Multi-Curl-Kontext und fügt ihm jede URL als separates einfaches Handle hinzu. Anschließend wird eine Schleife verwendet, um alle einfachen Handles zu durchlaufen, sie gleichzeitig auszuführen und die Ergebnisse zu sammeln. Schließlich wird der abgerufene Inhalt aller URLs gedruckt.

Durch die Verwendung paralleler cURL-Anfragen können Sie die Leistung Ihres Skripts erheblich verbessern und die Zeit reduzieren, die zum Abrufen von Daten von mehreren URLs erforderlich ist.

Das obige ist der detaillierte Inhalt vonWie kann ich parallele cURL-Anfragen ausführen, um Daten von mehreren URLs effizient in PHP abzurufen?. 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