curl并发例子

$curls = array();
$mh = curl_multi_init();
foreach($clss as $key => $cls){
    $param = $this->cvtParam($cls);
    //$header[] = "Content-type: text/xml";        //定义content-type为xml,注意是数组
    $curls[$key]['url'] = $this->gs_url;
    $curls[$key]['ch'] = curl_init();
    curl_setopt($curls[$key]['ch'], CURLOPT_URL, $curls[$key]['url']);
    curl_setopt($curls[$key]['ch'], CURLOPT_RETURNTRANSFER, true);
    //curl_setopt($curls[$key]['ch'], CURLOPT_HTTPHEADER, $header);
    curl_setopt($curls[$key]['ch'], CURLOPT_POST, 1);
    curl_setopt($curls[$key]['ch'], CURLOPT_TIMEOUT, 3);
    curl_setopt($curls[$key]['ch'], CURLOPT_POSTFIELDS, $param);
    curl_setopt($curls[$key]['ch'], CURLOPT_SSL_VERIFYPEER, false);
}

foreach ($curls as $curl) {
    curl_multi_add_handle($mh, $curl['ch']);
}

$active = null;

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);
    }
}

$rs = array();

foreach ($curls as $key => $curl) {
    $r = curl_multi_getcontent($curl['ch']);
    curl_multi_remove_handle($mh, $curl['ch']);
    if($r){
        $rs[$key] = json_decode($r,true);
    }
}

curl_multi_close($mh);

return $rs;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值