Requêtes PHP Parallel Curl : amélioration des performances pour la récupération de plusieurs données JSON
Les approches conventionnelles pour récupérer plusieurs données JSON à l'aide de file_get_contents() peuvent prendre du temps -consommateur en raison de sa nature séquentielle. Dans cet article, nous explorons une solution plus efficace utilisant des requêtes curl parallèles.
Le code donné démontre une approche typique, parcourant séquentiellement une liste d'URL, récupérant les données JSON de chaque URL et les stockant dans un tableau. . Cependant, cette méthode peut nuire aux performances, en particulier lorsqu'il s'agit d'un nombre important d'URL.
Pour surmonter ce problème, nous pouvons exploiter les requêtes multi-curl. Le multi-curl est une technique qui permet l'exécution parallèle de plusieurs requêtes curl simultanément. Cette approche accélère considérablement le processus en éliminant le besoin d'attendre que chaque requête soit terminée avant de lancer la suivante.
L'extrait de code fourni offre une implémentation de requêtes multi-curl :
$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);
En résumé, les requêtes curl parallèles offrent une amélioration substantielle des performances pour récupérer plusieurs données JSON à partir de différentes URL. Cette technique est particulièrement bénéfique lorsque vous travaillez avec un grand nombre d'URL, car elle minimise le temps d'attente entre les requêtes, ce qui accélère la récupération des données.
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!