curl_multi_init

(PHP 5)

curl_multi_initDevuelve un nuevo multi recurso cURL

Descripción

resource curl_multi_init ( void )

Permite procesar múltiples recursos cURL en paralelo.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve un multi recurso cURL si funciona, FALSE si falla.

Ejemplos

Ejemplo #1 curl_multi_init() example

Este ejemplo crea dos recursos cURL, los añade a un multi recurso, y los ejectua en paralelo.

<?php
// Crea dos recursos cURL
$ch1 curl_init();
$ch2 curl_init();

// Establece la URL y otras opciones apropiadas 
curl_setopt($ch1CURLOPT_URL"http://lxr.php.net/");
curl_setopt($ch1CURLOPT_HEADER0);
curl_setopt($ch2CURLOPT_URL"http://www.php.net/");
curl_setopt($ch2CURLOPT_HEADER0);

// Crea el multi recurso cURL
$mh curl_multi_init();

// Añade los dos recursos
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);

$active=null;
// Ejecuta los recursos
do {
    
$mrc curl_multi_exec($mh$active);
} while (
$mrc == CURLM_CALL_MULTI_PERFORM);

while (
$active && $mrc == CURLM_OK) {
    if (
curl_multi_select($mh) != -1) {
        do {
            
$mrc curl_multi_exec($mh$active);
        } while (
$mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

// Cierra los recursos
curl_multi_remove_handle($mh$ch1);
curl_multi_remove_handle($mh$ch2);
curl_multi_close($mh);

?>

Ver también

add a note add a note

User Contributed Notes 2 notes

up
0
hushuilong at gmail dot com
2 years ago
Simulate multiple threads request:
<?php
function multiple_threads_request($nodes){
       
$mh = curl_multi_init();
       
$curl_array = array();
        foreach(
$nodes as $i => $url)
        {
           
$curl_array[$i] = curl_init($url);
           
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);
           
curl_multi_add_handle($mh, $curl_array[$i]);
        }
       
$running = NULL;
        do {
           
usleep(10000);
           
curl_multi_exec($mh,$running);
        } while(
$running > 0);
       
       
$res = array();
        foreach(
$nodes as $i => $url)
        {
           
$res[$url] = curl_multi_getcontent($curl_array[$i]);
        }
       
        foreach(
$nodes as $i => $url){
           
curl_multi_remove_handle($mh, $curl_array[$i]);
        }
       
curl_multi_close($mh);       
        return
$res;
}
print_r(muti_thread_request(array(
   
'http://www.example.com',
   
'http://www.example.net',
)));
?>
up
-4
jaisen at jmathai dot com
5 years ago
http://github.com/jmathai/epicode/tree/master/php/EpiCurl.php

If you fire off 10 curl requests in parallel you don't have to wait for all of them to be finished before accessing one which is already finished.
To Top