您的位置 首页 php

PHP并行请求接口

//并行调用接口

function multiRequest($url, $data, $timeout = 30) {
$chArr = [];
//创建多个cURL资源
 foreach  ($data as $k => $value) {
$i = $k;
$chArr[$i] = curl_init();
curl_setopt($chArr[$i], CURLOPT_URL, $url);
//数组转为json串
$value = json_encode($value);
//post请求
curl_setopt($chArr[$i], CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($chArr[$i], CURLOPT_POSTFIELDS, $value);
curl_setopt($chArr[$i], CURLOPT_RETURNTRANSFER, 1);
//只需要设置一个秒的数量就可以
curl_setopt($chArr[$i], CURLOPT_TIMEOUT, $timeout);
//设置请求头
curl_setopt($chArr[$i], CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' .  strlen ($value)));
}
//创建批处理cURL 句柄 
$mh = curl_multi_init(); 
//增加句柄
forea ch  ($chArr as $k => $ch) {
curl_multi_add_ handle ($mh, $ch); 
}
$active = null;
 do  {
while (($mrc = curl_multi_exec($mh, $active)) == CURLM_CALL_MULTI_PERFORM);
if ($mrc != CURLM_OK) {
 break ;
}
while ($ done  = curl_multi_info_read($mh)) {
$info = curl_getinfo($done['handle']);
$error = curl_error($done['handle']);
$tmp = curl_multi_getcontent($done['handle']);
$result[] = $tmp;
curl_multi_remove_handle($mh, $done['handle']);
curl_close($done['handle']);
}
if ($active > 0) {
curl_multi_select($mh);
}
} while ($active);
return $result;
}
 

文章来源:智云一二三科技

文章标题:PHP并行请求接口

文章地址:https://www.zhihuclub.com/149524.shtml

关于作者: 智云科技

热门文章

网站地图