Maison >développement back-end >tutoriel php >Comment puis-je exécuter des requêtes cURL parallèles pour récupérer efficacement des données de plusieurs URL en PHP ?
PHP : Comment exécuter des requêtes cURL parallèles
Lorsque vous faites face à des situations où vous devez récupérer efficacement des données de plusieurs URL, des requêtes cURL parallèles devenir une nécessité. Dans ce contexte, considérons votre scénario dans lequel vous souhaitez récupérer des données JSON à partir de 15 URL différentes à l'aide de file_get_contents($url).
Votre approche actuelle utilisant une simple boucle pour effectuer des requêtes séquentielles peut entraîner des ralentissements importants dus à la nature synchrone de file_get_contents. Cela signifie que le script doit attendre que chaque requête soit terminée avant de passer à la suivante.
Pour surmonter ce problème, nous pouvons exploiter les requêtes multi-cURL. Voici comment y parvenir :
$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);
Ce script crée un contexte multi-curl et y ajoute chaque URL en tant que poignée simple distincte. Il utilise ensuite une boucle pour parcourir toutes les poignées simples, les exécutant simultanément et collectant les résultats. Enfin, il imprime le contenu récupéré de toutes les URL.
En utilisant des requêtes cURL parallèles, vous pouvez améliorer considérablement les performances de votre script et réduire le temps nécessaire pour récupérer les données de plusieurs URL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!