PHP Multi-Curl为第一个URL返回空值

PHP Multi-Curl为第一个URL返回空值,php,curl,null,Php,Curl,Null,我使用multi-curl检索一些页面,从1到200。 问题是列表返回的第一个链接总是空的! 我不明白为什么!!欧欧欧 $mh = curl_multi_init(); for($j=0; $j<$i; $j++){ $ch[$j] = curl_init($Links[$j]); curl_setopt($ch[$j], CURLOPT_CONNECTTIMEOUT, $curlConTimeOut); curl_setopt($ch[$j], CURLOPT_

我使用multi-curl检索一些页面,从1到200。 问题是列表返回的第一个链接总是空的! 我不明白为什么!!欧欧欧

$mh = curl_multi_init();

for($j=0; $j<$i; $j++){
    $ch[$j] = curl_init($Links[$j]);
    curl_setopt($ch[$j], CURLOPT_CONNECTTIMEOUT, $curlConTimeOut);
    curl_setopt($ch[$j], CURLOPT_TIMEOUT, $curlTimeOut);
    curl_setopt($ch[$j], CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch[$j], CURLOPT_MAXREDIRS, 3);
    curl_setopt($ch[$j], CURLOPT_FOLLOWLOCATION, 1);
    curl_multi_add_handle($mh, $ch[$j]);
}

$active = null;
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}
$Si = 0; $Fi = 0; $Disp = "";
for($j=0; $j<$i; $j++){
    if($ch[$j]){
        if(curl_multi_getcontent($ch[$j]) == null){
            $Disp .= '0';
            $Fi++;
        }else{
            $Disp .= '1';
            $Si++;
        }           
        curl_multi_remove_handle($mh, $ch[$j]);
        curl_close($ch[$j]);
    }
}
curl_multi_close($mh);
$mh=curl_multi_init();

对于($j=0;$j,如您所见,当您执行/请求更少的内容/页面时,您将更快地命中1(1表示成功,0表示错误)

据我所知,您的第一个请求超时。我的猜测是,您需要降低每次请求/执行的数量。让我们留下来,您需要执行5,获取值,然后执行下一个5

5只是我说的一个数字,所以测试哪个数字更适合你。如果你的处理器可以同时处理更多的东西,这个数字可能会更大。但也限于互联网的另一端,他们的响应速度有多快


希望它能帮上忙

这个脚本对我来说没有意义少于100个请求!!这是因为你不能提出100个请求,这是因为你不需要一次完成所有的请求。它就像一根水管,如果压力太大,它会爆炸。只要把请求量调低我总是可以降低请求量,但我必须提高请求量尽我所能!50个请求并不多!所以对于增量,我必须做什么?增加主机服务?购买更多RAM?更好的CPU?可笑的是,如果我请求160个链接,我返回60:65/161个成功如果我请求50个,我返回30:link Success:30/52我不认为有过载的问题…我认为这是错误的主持人。。。。