多线程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;

国内云服务器 1核 2G 2M 15元/月 萤光云

标题【萤光云双十二 全场6折 15元/月 续费同价】今天站长给大家推荐一家国内云厂商的双十二活动。萤光云总部位于福建福州,其成立于2002 年。主打高防云服务器产品,主要提供福州、北京、上海 BGP 和香港 CN2 节点。萤光云的高防云服务器自带 50G 防御,适合高防建站、游戏高防等业务。这家厂商本次双十二算是性价比很高了。全线产品6折,上海 BGP 云服务器折扣更大 5.5 折(测试了一下是金...

tmhhost:暑假快乐,全高端线路,VPS直接8折,200G高防,美国gia日本软银韩国cn2香港cn2大带宽

tmhhost为2021年暑假开启了全场大促销,全部都是高端线路的VPS,速度快有保障。美国洛杉矶CN2 GIA+200G高防、洛杉矶三网CN2 GIA、洛杉矶CERA机房CN2 GIA,日本软银(100M带宽)、香港BGP直连200M带宽、香港三网CN2 GIA、韩国双向CN2。本次活动结束于8月31日。官方网站:https://www.tmhhost.com8折优惠码:TMH-SUMMER日本...

半月湾hmbcloud升级500Mbps带宽,原生VPS,$4.99/月

关于半月湾HMBCloud商家之前也有几篇那文章介绍过这个商家的产品,对于他们家的其他产品我都没有多加留意,而是对他们家的DC5机房很多人还是比较喜欢的,这个比我们有些比较熟悉的某商家DC6 DC9机房限时,而且半月湾HMBCloud商家是相对便宜的。关于半月湾DC5机房的方案选择和介绍:1、半月湾三网洛杉矶DC5 CN2 GIA同款DC6 DC9 1G内存 1TB流量 月$4.992、亲测选择半...

php多线程为你推荐
国内免备案服务器我在国内租了一台服务器,国内服务器需备案.怎样才能不用备案?急....美团月付怎么关闭美团打车免密去付关掉了,怎么回复聚酯纤维和棉哪个好聚酯纤维和棉哪个好电脑管家和360哪个好电脑管家和360卫士哪个好?闪迪和金士顿哪个好tf卡闪迪和金士顿哪个更好朗逸和速腾哪个好大众朗逸和速腾哪个更好一点?录音软件哪个好什么录音软件最好用宝来和朗逸哪个好宝来和朗逸哪个好手机杀毒软件哪个好手机用什么杀毒软件好qq空间登录电脑求助,怎么登陆电脑版的qq空间
成都虚拟空间 重庆域名注册 租服务器价格 网易域名邮箱 adman 国外idc 美国主机网 2014年感恩节 免费博客空间 512m内存 中国特价网 申请个人网页 ibox官网 什么是刀片服务器 hostloc 腾讯总部在哪 国内空间 美国十大啦 海尔t68g ddos是什么 更多