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!