Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/10/2009, 08:40
initio
 
Fecha de Ingreso: diciembre-2008
Mensajes: 129
Antigüedad: 15 años, 4 meses
Puntos: 1
Problemas con la instrucción curl_multi_getcontent

Hola a todos,

tengo un problemilla bastante complicado, o eso creo yo. Es con la instrucción CURL.

Tengo barios crones que utilizan la instrucción CURL con multisesiones, y todos funcionan perfectamente (durante un año). Menos en uno, que dejó de funcionar la semana pasada. Al realizar la instrucción curl_multi_getcontent(), no me devuelve nada. Sin errores ni nada, simplemente no devuelve nada.

Ahora os adjunto el código, pero por favor, abstenerse los que no sepáis que puede ser, porque el tema de configuración del servidor, ... está todo bién (los otros crones tienen exactamente las mismas intrucciones y funcionan bién). Y las URL a que intento acceder sí que tienen datos. Si a alguien le ha pasado lo mismo, o se le ocurre algo, por favor ...

Por cierto, una vez de cada 50 (por decir algo) funciona bién, lo que no puede ser el firewall del servidor destino.

Po lo tanto, fallos que no pueden ser :

- Direcciones bacías.
- Configuración de mi servidor.
- Firewall del servidor destino (que no acepte mis peticiones).

Ahí va el código.

-> Definición URL

$URLS[] = "http://www.url1.com";
$URLS[] = "http://www.url2.com";
$URLS[] = "http://www.url3.com";

-> Iniciación CURL

$mh = curl_multi_init();

foreach ($URLS as $i => $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$i], CURLOPT_TIMEOUT, 90);
curl_setopt($conn[$i], CURLOPT_SSL_VERIFYPEER, FALSE);
curl_multi_add_handle ($mh,$conn[$i]);
}

-> Peticiones

do {
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

-> Recepción OK

while ($active and $mrc == CURLM_OK) {

if (curl_multi_select($mh) != -1) {

do
{
$mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}

-> Recepción de los datos

foreach ($URLS as $i => $url) {

$err = curl_error($conn[$i]);

if ($err == '')
{
$xml=curl_multi_getcontent($conn[$i]); <- Bacío
var_dump($xml);
}
else
{
var_dump("Curl error on handle $i: $err");
}

curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i]);

}

Muchas gracias a todos. Si algún genio de por aquí se le ocurre algo, le estaré infinitamente agradecido.

Muchas gracias.