curl_multi_exec返回空数组

时间:2012-05-31 20:33:33

标签: php curl curl-multi

我一直在使用以下函数来制作异步卷曲帖子:

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])是空的,所以我不知道从哪里开始寻找错误。我知道URL是正确的,因为如果我背靠背定期卷发它可以正常工作。

1 个答案:

答案 0 :(得分:-1)

你的do-while循环永远不会运行。 $ running永远不会&gt; 1,因为它在前一行设置为null。