Ejecutar múltiples peticiones usando Curl paralelamente con PHP
Un escenario cada vez más común es crear una aplicación usando un popurri de APIs y queremos ofrecerle al usuario una respuesta lo más rápida posible. Si los datos que nos pide el usuario no están en local que debemos solicitarlos a varias APIs, si se hace secuencialmente se puede dar un escenario como el siguiente:
- API 1 tarda 2seg
- API 2 3seg
- API 3 3seg
- API 4 8seg
Suma un total de 16 segundos, con lo que el usuario se nos puede desesperarse un poco. En cambio si hacemos las peticiones simultáneamente la respuesta es posiblemente 8 segundos, lo que saldría en este escenario la mitad de tiempo, el usuario de aplicación te lo va a agraceder :).
Este es código PHP para lograr las peticiones paralelas.
$nodes = array(‘http://www.api1.com’, ‘http://www.api2.com’, ‘http://www.api3.com’, ‘http://www.api4.com’);
$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);
echo “results: “;
for($i = 0; $i < $node_count; $i++)
{
$results = curl_multi_getcontent ( $curl_arr[$i] );
echo( $i . “\n” . $results . “\n”);
}
echo ‘done’;
Visto en rustyrazorblade.com y php.net
También te puede interesar
Guía para spinear artículos en español
Cómo escribir un artículo optimizado para SEO en WordPress
Revive Old Posts incrementa tu tráfico desde twitter
¿Qué hacer cuando te copian contenido? Google Scraper Report