多线程php多线程批量采集下载图片的实现代码

php多线程  时间:2021-01-31  阅读:()

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;

MOACK:韩国服务器/双E5-2450L/8GB内存/1T硬盘/10M不限流量,$59.00/月

Moack怎么样?Moack(蘑菇主机)是一家成立于2016年的商家,据说是国人和韩国合资开办的主机商家,目前主要销售独立服务器,机房位于韩国MOACK机房,网络接入了kt/lg/kinx三条线路,目前到中国大陆的速度非常好,国内Ping值平均在45MS左右,而且商家的套餐比较便宜,针对国人有很多活动。不过目前如果购买机器如需现场处理,由于COVID-19越来越严重,MOACK办公楼里的人也被感染...

hypervmart:英国/荷兰vps,2核/3GB内存/25GB NVMe空间/不限流量/1Gbps端口/Hyper-V,$10.97/季

hypervmart怎么样?hypervmart是一家国外主机商,成立于2011年,提供虚拟主机、VPS等,vps基于Hyper-V 2012 R2,宣称不超售,支持linux和windows,有荷兰和英国2个数据中心,特色是1Gbps带宽、不限流量。现在配置提高,价格不变,性价比提高了很多。(数据中心不太清楚,按以前的记录,应该是欧洲),支持Paypal付款。点击进入:hypervmart官方网...

GreenCloudVPS$20/年,新加坡/美国/荷兰vps/1核/1GB/30GB,NVMe/1TB流量/10Gbps端口/KVM

greencloudvps怎么样?greencloudvps是一家国外主机商,VPS数据中心多,之前已经介绍过多次了。现在有几款10Gbps带宽的特价KVM VPS,Ryzen 3950x处理器,NVMe硬盘,性价比高。支持Paypal、支付宝、微信付款。GreenCloudVPS:新加坡/美国/荷兰vps,1核@Ryzen 3950x/1GB内存/30GB NVMe空间/1TB流量/10Gbps...

php多线程为你推荐
视频制作软件哪个好我想学做视频跟作图,推荐下什么软件好麒麟990和骁龙865哪个好高通865处理器怎么样?值得入手吗?杀毒软件哪个好杀毒软件什么最好压缩软件哪个好压缩软件用哪个会比较好用游戏加速器哪个好大家玩游戏用的都是什么加速器啊,哪个效果最好浏览器哪个好用浏览器哪个最好用?杰士邦和杜蕾斯哪个好杰士邦的超薄款跟杜蕾斯的超薄款,哪个舒服点?核芯显卡与独立显卡哪个好核芯显卡与独立显卡哪个好炒股软件哪个好用玩股票哪个软件好?dnf魔枪士转职哪个好dnf魔枪士转职哪个职业好?
域名解析 域名邮箱 域名到期查询 linuxvps 加勒比群岛 外国空间 174.127.195.202 12306抢票攻略 绍兴高防 老左正传 699美元 中国电信测网速 免费网页申请 七夕快乐英语 双12 web服务器搭建 google台湾 东莞服务器托管 apnic 防盗链 更多