function postMulti($nodes,$timeOut = 5)
{
try
{
if (false == is_array($nodes))
{
return array();
}
$mh = curl_multi_init();
$curlArray = array();
foreach($nodes as $key => $info)
{
if(false == is_array($info))
{
continue;
}
if(false == isset($info['url']))
{
continue;
}
$ch = curl_init();
// 设置url
$url = $info['url'];
curl_setopt($ch, CURLOPT_URL, $url);
$data = isset($info['data']) ? $info['data'] :null;
if(false == empty($data))
{
curl_setopt($ch, CURLOPT_POST, 1);
// array
if (is_array($data) && count($data) > 0)
{
curl_setopt($ch, CURLOPT_POST, count($data));
}
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// 如果成功只将结果返回,不自动输出返回的内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// user-agent
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0");
// 超时
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeOut);
$curlArray[$key] = $ch;
curl_multi_add_handle($mh, $curlArray[$key]);
}
$running = NULL;
do {
usleep(10000);
curl_multi_exec($mh,$running);
} while($running > 0);
$res = array();
foreach($nodes as $key => $info)
{
$res[$key] = curl_multi_getcontent($curlArray[$key]);
}
foreach($nodes as $key => $info){
curl_multi_remove_handle($mh, $curlArray[$key]);
}
curl_multi_close($mh);
return $res;
}
catch ( Exception $e )
{
return array();
}
return array();
}
$urls = array(
0=>array(
'url'=>'http://www.aaa.com/1.php',
'data'=>array(
'dopost' => 'test'
)
),
1=>array(
'url'=>'http://www.bbb.com/2.php',
'data'=>array(
'dopost' => 'test'
)
),
);
postMulti($urls);
echo 'finish'.date('Y-m-d H:i:s');
die;
参考:http://blog.csdn.net/clevercode/article/details/51548210