簡體   English   中英

curl_multi_exec返回空數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM