1,pthreads扩展方案,结果耗损内存巨大不理想,最好少用
2,php自带curl:(满足场景要求,稳定)
function Mcurl($urls){
$pthreed = curl_multi_init();
foreach ($urls as $key => $urlInfo) {
$conn[$key]=curl_init($urlInfo['url']);
curl_setopt($conn[$key], CURLOPT_HTTPHEADER, array("Content-type: application/json; charset=utf-8",'Accept-Encoding: gzip'));
curl_setopt($conn[$key], CURLOPT_USERAGENT, "eleme-openapi-php-sdk");
curl_setopt($conn[$key], CURLOPT_ENCODING, "gzip");
curl_setopt($conn[$key], CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($conn[$key], CURLOPT_POSTFIELDS,json_encode($urlInfo['data']));
curl_setopt($conn[$key], CURLOPT_RETURNTRANSFER,1);
curl_setopt($conn[$key], CURLOPT_TIMEOUT,5);
curl_setopt($conn[$key], CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($conn[$key], CURLOPT_SSL_VERIFYHOST, 0);
curl_multi_add_handle ($pthreed,$conn[$key]);
}
do {$mrc = curl_multi_exec($pthreed,$active);} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active and $mrc == CURLM_OK) {
if (curl_multi_select($pthreed) != -1) {
do {$mrc = curl_multi_exec($pthreed, $active);} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
foreach ($urls as $key => $url) {
$res[$key]=curl_multi_getcontent($conn[$key]);
curl_close($conn[$key]);
}
return $res;
}