【发布时间】:2013-02-26 05:53:05
【问题描述】:
我使用多卷曲检索一些页面,从 1 到 200。 问题是 List 中的第一个链接总是返回 Empties! 我不明白为什么! O_o
$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);
$Si / $Fi / $Disp 仅用于测试,结果示例如下:
链接成功率:65/161
链接失败:96/161
DISP:00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111101111110011111111001111111111111111111111111111111111 P>
0 代表失败,1 代表成功。如果N元素为0,则表示N个Link返回NULL
不可能每次都只有首字母元素返回null!!几率是多少?!?!?! 我要求 curl_error,所有内容都是:“连接在 XXXXX 毫秒后超时”!
1°:13852 毫秒
2°:13833 毫秒 ... 12676 毫秒 ... 10195 ... 并持续到 6007 毫秒,然后开始正确的!
CURLOPT_CONNECTTIMEOUT 设置为 6 秒!
为什么每次都是从一个大的数字开始到6,然后返回对吗? o_o 我想强调一下,空响应的顺序仅取决于列表!不从multicurl时间响应!
另一个链接较少的例子:
|链接成功:30/52
|链接失败:22/52
|显示:00000000000000000000001111111111011111111111111111111
【问题讨论】: