网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月24日
漏签
0
天
php吧
关注:
280,758
贴子:
1,320,474
看贴
图片
吧主推荐
视频
游戏
4
回复贴,共
1
页
<<返回php吧
>0< 加载中...
请教大神curl_mutil的问题
取消只看楼主
收藏
回复
printfend
记事本
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我之前用的上面的方法,没问题,除了跑起来cup有点吃不消以外。
然后别人说下面的方式更好,就在手册查了跟着写了一下,但是为什么就是不工作?
printfend
记事本
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
跑的时候,在这个if这里,老不进去,就一直while循环,
这是为何?
printfend
记事本
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
function async_get_url($url_array, $wait_usec = 0)
{
$t1 = get_time();
if (!is_array($url_array))
{return false;}
//设置每个请求等待时间,ms记
$wait_usec = intval($wait_usec);
//最后取数据
$data = array();
//批量句柄
$handle = array();
//剩余要抓的地址
$running = 0;
//定义批处理句柄
$mh = curl_multi_init(); // multi curl handler
//配置
$curl_option = array(
CURLOPT_HEADER=>0,
CURLOPT_RETURNTRANSFER=>1,
CURLOPT_TIMEOUT=>10,
CURLOPT_USERAGENT=>'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
CURLOPT_FOLLOWLOCATION=>1,
CURLOPT_MAXREDIRS=>7,
);
foreach ($url_array as $i=>$url)
{
//分别为每个地址初始化句柄
$handle[$i] = curl_init();
//设置配置
curl_setopt($handle[$i], CURLOPT_URL, $url);
curl_setopt_array($handle[$i], $curl_option);
// 把 curl resource 放进 multi curl handler 里
curl_multi_add_handle($mh, $handle[$i]);
}
$z = 1;
do{
$t2 = get_time();
echo "\r\n在抓第{$z}次\r\n";
get_memory();
get_peak_memory();
//多线程执行
$a = curl_multi_exec($mh, $running);
echo "还剩{$running}个地址\r\n";
$t3 = get_time();
echo $a."\r\n";
echo CURLM_CALL_MULTI_PERFORM."\r\n";
echo "\r\n";
echo "此次用时".($t3-$t2)."S\r\n已经用时".($t3-$t1)." S";
$z++;
//} while ($running > 0);
}while($a == CURLM_CALL_MULTI_PERFORM);
echo "\r\n";
echo $running."\r\n";//14
echo $a."\r\n";//0
echo CURLM_CALL_MULTI_PERFORM."\r\n";//-1
echo CURLM_OK."\r\n";//0
echo curl_multi_select($mh)."\r\n";//-1
echo "\r\n";
while($running && $a == CURLM_OK)
{
echo "aaaaaaaaaa\r\n";
if (curl_multi_select($mh) != -1)
{
echo "bbbbbbbbbbbbb\r\n";
do{
echo "cccccccccccc\r\n";
$a = curl_multi_exec($mh, $running);
}while($a == CURLM_CALL_MULTI_PERFORM);
}
echo "dddddddddddd\r\n";
}
//读取抓的数据
foreach ($handle as $i => $ch)
{
$content = curl_multi_getcontent($ch);
$data[$i] = (curl_errno($ch) == 0) ? $content : false;
echo "放第".($i+1)."张\r\n";
$name = './img/'.$i.".jpg";
file_put_contents($name, $content);
curl_multi_remove_handle($mh, $handle[$i]);
}
curl_multi_close($mh);
//return $data;
}
printfend
记事本
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
大神快出来
printfend
记事本
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
没人吗
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示