SunshinePHP Developer Conference 2015

curl_multi_info_read

(PHP 5)

curl_multi_info_readObtiene información de las transferencias en curso

Descripción

array curl_multi_info_read ( resource $mh [, int &$msgs_in_queue = NULL ] )

Pregunta al multi recurso si hay algún mensaje o información de cada una de las transferencias. Los mensajes quizá incluyen información como códigos de error de la transferencia o simplemente que la transferencia ha sido completada.

Cada vez que se llame a esta función devolverá un nuevo resultado, hasta que se devuelva FALSE como indicador de que no hay nada más que obtener por el momento. El integer que devuelve msgs_in_queue contendrá el número de mensajes que quedan después de que la función sea llamada.

Advertencia

Los datos que devuelve el recurso no permanecerán si se llama a la función curl_multi_remove_handle().

Parámetros

mh

El multi recurso cURL multi devuelto por curl_multi_init().

msgs_in_queue

Número de mensajes que todavía están en la cola

Valores devueltos

Si funciona, devuelve un array asociativo como mensaje, si falla devuelve FALSE.

Contenido del array devuelto
Clave: Valor:
msg La constante CURLMSG_DONE. Otros valores devueltos no están actualmente disponibles.
result Una de las constantes CURLE_*. Si todo es OK, se devolverá CURLE_OK.
handle Recurso de tipo curl que indica el controlador en cuestión.

Ejemplos

Ejemplo #1 Un ejemplo de curl_multi_info_read()

<?php

$urls 
= array(
   
"http://www.cnn.com/",
   
"http://www.bbc.co.uk/",
   
"http://www.yahoo.com/"
);

$mh curl_multi_init();

foreach (
$urls as $i => $url) {
    
$conn[$i] = curl_init($url);
    
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER1);
    
curl_multi_add_handle($mh$conn[$i]);
}

do {
    
$status curl_multi_exec($mh$active);
    
$info curl_multi_info_read($mh);
    if (
false !== $info) {
        
var_dump($info);
    }
} while (
$status === CURLM_CALL_MULTI_PERFORM || $active);

foreach (
$urls as $i => $url) {
    
$res[$i] = curl_multi_getcontent($conn[$i]);
    
curl_close($conn[$i]);
}

var_dump(curl_multi_info_read($mh));

?>

El resultado del ejemplo sería algo similar a:

array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(5) of type (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(7) of type (curl)
}
array(3) {
  ["msg"]=>
  int(1)
  ["result"]=>
  int(0)
  ["handle"]=>
  resource(6) of type (curl)
}
bool(false)

Historial de cambios

Versión Descripción
5.2.0 msgs_in_queue fue añadido.

Ver también

add a note add a note

User Contributed Notes 1 note

up
0
Nick Smith
4 years ago
Just to let others who might be struggling to get it to work, curl_multi_info_read() doesn't work in PHP versions before 5.2.0, and instead returns NULL immediately.
To Top