Publicado

Como hacer peticiones HTTP asíncronas en PHP

Autor

Ejemplo para realizar llamasas HTTP asíncronas con curl_multi desde PHP

            $nodes = array(
              /* .... listado de urls a llamar asíncronamente ... */
            );

            $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++)
            {
                $data = curl_multi_getcontent( $curl_arr[$i]);

                /*
                 * Aqui procesamos las respuestas. Si fuera necesáreo.
                 */

                curl_multi_remove_handle($master, $curl_arr[$i]);
                
            }
            curl_multi_close($master);

Un saludo!!!