function multi_post($urls, $params,$header)
{
//设置curl
$chArr = [];
for ($i = 0; $i < count($urls); $i++) {
$chArr[$i] = curl_init($urls[$i]);
curl_setopt($chArr[$i], CURLOPT_RETURNTRANSFER, 1);
//设置头文件的信息作为数据流输出
curl_setopt($chArr[$i], CURLOPT_HEADER, 0);
// 超时设置,以秒为单位
curl_setopt($chArr[$i], CURLOPT_TIMEOUT, 30);
// 设置请求头
curl_setopt($chArr[$i], CURLOPT_HTTPHEADER, $header);
//这里是post请求,可根据业务需求修改请求
curl_setopt($chArr[$i], CURLOPT_POST, true);
curl_setopt($chArr[$i], CURLOPT_POSTFIELDS, http_build_query($params));
//设置获取的信息以文件流的形式返回,而不是直接输出。
}
//创建curl
$mh = curl_multi_init();
foreach ($chArr as $k => $ch) {
curl_multi_add_handle($mh, $ch);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while ($running > 0);
$res = [];
//启动多线程
foreach ($chArr as $k => $ch) {
$result[$k] = curl_multi_getcontent($ch);
array_push($res, $result[$k]);
curl_multi_remove_handle($mh, $ch);
}
curl_multi_close($mh);
return $res;
}
PHP 多线程curl
最新推荐文章于 2023-01-12 11:23:38 发布