Hola,
A ver si alguien puede echarme una mano. Quiero realizar varios envíos por POST de un string en XML a un servidor externo. Actualmente envío las peticiones consecutivamente pero necesitaria hacerlo simultáneamente. He probado con las librerias CURL pero no funcionan. Os adjunto el código:
//Array con las tres llamadas
$strParameters_array = array( $strParameters, $strParameters_out, $strParameters_ret );
$mh = curl_multi_init();
foreach ( $strParameters_array as $Key => $Str )
{
$conn[$Key] = curl_init();
// Set the URL to execute
curl_setopt($conn[$Key], CURLOPT_URL, "http : //url de peticion al servidor");
// Set options
curl_setopt($conn[$Key], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$Key], CURLOPT_POST, 1);
curl_setopt($conn[$Key], CURLOPT_POSTFIELDS, $Str);
curl_setopt($conn[$Key], CURLOPT_HTTPAUTH, CURLAUTH_ANY);
CURLOPT_USERPWD, "usuario:password");
curl_setopt($conn[$Key], CURLOPT_CONNECTTIMEOUT, 45);
curl_setopt($conn[$Key], CURLOPT_TIMEOUT, 60);
curl_multi_add_handle ($mh, $conn[$Key]);
}
do
{
$mrc = curl_multi_exec ($mh, $active);
}while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ( $active and $mrc == CURLM_OK )
{
//Whait for network
if ( curl_multi_select($mh) != -1 )
{
//pull in any new data, or at least handle timeouts
do
{
$mrc = curl_multi_exec ($mh, $active);
}while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
if ($mrc != CURLM_OK)
{
print "Curl multi read error $mrc/n";
}
//retrieve data
foreach ($strParameters_array as $i => $str)
{
if (( $err = curl_error ($conn[$i])) == '')
{
$res[$i] = curl_multi_getcontent($conn[$i]);
}
else
{
print "Curl error on handle $i: $err\n";
}
curl_multi_remove_handle($mh, $conn[$i]);
curl_close ($conn[$i]);
}
curl_multi_close($mh);
print ($res);
exit();
Ruego que alguien me eche una mano.
Gracias!!!!!!