PHP多线程批量采集下载图片的实现代码
使用curl的多线程另外curl可以设置请求时间遇到很慢的url资源可以果断的放弃这样没有阻塞另外有多线程请求效率应该比较高
*c url多线程
*@param array$array并行网址
*@param int$timeout超时时间
*@return mixpublic function Curl_http($array,$timeout=‘15’){
$res=array();
$mh=c url_mult i_in it();//创建多个c url语柄foreach($array as$k=$url){
$c onn[$k]=c url_init($ur l);//初始化curl_s etopt($c onn[$k],CURLOPT_TIMEO UT, $timeout);//设置超时时间curl_setopt($conn[$k], CURLOPT_USERAGENT, ‘Mozilla/5.0 (compatible;MSIE 5.01;Windows NT 5.0)’);curl_s etopt($c onn[$k],CURLOPT_MAXREDIRS,7);//HTTp定向级别 7最高c url_s etopt($c onn[$k],CURLOPT_HEADER, fals e);//这里不要header加块效率curl_setopt($c onn[$k],CURLOPT_FOLLOWLOCATION, 1); //302 redirectcurl_s etopt($c onn[$k],CURLOPT_RET URNTRANSFER,1);//要求结果为字符串且输出到屏幕上curl_s etopt($c onn[$k],CURLOPT_HTTPGET, true);curl_mult i_add_handle($mh,$c onn[$k]);
//防止死循环耗死cpu这段是根据网上的写法
do {
$mrc=c url_multi_exec($mh,$active);//当无数据 ac tive=true
}while($mrc==CURLM_CALL_MULTI_PERFORM);//当正在接受数据时while($active and$mrc==CURLM_O K) {//当无数据时或请求暂停时 ac tive=trueif(curl_multi_s e lec t($mh) !=-1) {do {
$mrc=c url_multi_exec($mh, $ac tive);
}while($mrc==CURLM_CALL_MULTI_PERFORM);foreach($array as $k=$url) {if(!c url_errno($c onn[$k])){
$data[$k]=c url_multi_g etc ontent($c onn[$k]);//数据转换为array
$header[$k]=c url_getinfo($c onn[$k]);//返回http头信息curl_c los e($c onn[$k]);//关闭语柄curl_multi_remove_handle($mh, $c onn[$k]); //释放资源
}els e{un s et($k,$ur l);curl_mult i_c los e($mh);r eturn$data;
//参数接收
$c allb ac k=$_GET[‘c allb ac k’];
$hr e fs=$_GET[‘hr e fs’];
$urlarray=explo de(‘ , ’,trim($hrefs, ’, ’));
$date=date(‘Ymd’ ,time(png|PNG|JPG|gif))\\2/i ,$v,$matches[$k]);if(c ount($matches[$k][3])0){
$dataimg=$img-Cur l_http($m atc he s[$k][3],’20’);//全部图片数据二进制$j=0;foreach((array)$dataimg as$kk=$vv){if($vv!=‘‘){
$rand=rand(1000,9999);
$bas ename=time()._.$rand. . .jpg;//保存为jpg格式的文件
$fname=‘./img/’ .$date. / . $basenamefile_put_c ontents($fname,$vv);
$j++;echo创建第.$j.张图片. $fname.br/
}els e{un s et($kk,$vv);
}els e{unset($matches);
$etime=$img-getMic rotime();//结束时间echo用时.($etime-$stime).秒exit;
目前国内云计算市场竞争异常激烈,尤其是国内的腾讯云、阿里云、景安等商家促销活动一波接一波的进行,对于有需要的用户确实得到不小的实惠。但是这样给予国内的主机商确实是比较大的打击,毕竟这些商家的背景和实例强劲,即便是贴本补贴优惠,也是不怕的。前两年阿里一家各种活动促销,确实在国内市场占据主要的市场地位,腾讯云开始两年没有较大的吸引用户,不过这两年的发展还是比较稳健的。我们很多网友在之前肯定也享受到一些...
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
港云网络官方网站商家简介港云网络成立于2016年,拥有IDC/ISP/云计算资质,是正规的IDC公司,我们采用优质硬件和网络,为客户提供高速、稳定的云计算服务。公司拥有一流的技术团队,提供7*24小时1对1售后服务,让您无后顾之忧。我们目前提供高防空间、云服务器、物理服务器,高防IP等众多产品,为您提供轻松上云、安全防护。点击进入港云网络官方网站港云网络中秋福利1元领【每人限量1台】,售完下架,活...