PHP Multi-Curl为第一个URL返回空值
我使用multi-curl检索一些页面,从1到200。 问题是列表返回的第一个链接总是空的! 我不明白为什么!!欧欧欧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_
$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我不认为有过载的问题…我认为这是错误的主持人。。。。