[英]curl_multi_exec returning empty arrays
我一直在使用以下函数制作异步curl帖子:
function curl_post_multi($urls){
$curl_arr = array();
$num_urls = count($urls);
$mh = curl_multi_init();
for($i= 0; $i < $num_urls; $i++){
$curl_arr[$i] = curl_init();
curl_setopt($curl_arr[$i], CURLOPT_URL, $urls[$i]);
curl_setopt($curl_arr[$i], CURLOPT_HEADER, 0);
curl_setopt($curl_arr[$i], CURLOPT_POST, true);
curl_setopt($curl_arr[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_arr[$i], CURLOPT_RETURNTRANSFER, true);
curl_multi_add_handle($mh, $curl_arr[$i]);
}
$running = null;
do{
curl_multi_exec($mh, $running);
}while($running > 0);
$results = array();
for($i= 0; $i < $num_urls; $i++){
$results[] = curl_multi_getcontent($curl_arr[$i]);
curl_multi_remove_handle($mh, $curl_arr[$i]);
}
curl_multi_close($mh);
return $results;
}
我刚刚注意到,它通常仅从第一个URL返回结果,或者根本没有返回结果。 我已经试用了该功能的大约100种配置。 结果为空数组,curl_error($ curl_arr [$ i])为空,因此我不确定从哪里开始寻找问题所在。 我知道URLS是正确的,因为如果我背靠背进行常规卷发就可以了。
您的do-while循环永远不会运行。 $ running从不大于1,因为在前一行将其设置为null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.