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

Friendhosting全场VDS主机45折,虚拟主机4折,老用户续费9折

Friendhosting发布了今年黑色星期五促销活动,针对全场VDS主机提供45折优惠码,虚拟主机4折,老用户续费可获9折加送1个月使用时长,优惠后VDS最低仅€14.53/年起,商家支持PayPal、信用卡、支付宝等付款方式。这是一家成立于2009年的老牌保加利亚主机商,提供的产品包括虚拟主机、VPS/VDS和独立服务器租用等,数据中心可选美国、保加利亚、乌克兰、荷兰、拉脱维亚、捷克、瑞士和波...

Central美国65折优惠,美国达拉斯机房VPS季付赠送双倍内存

Central美国独立日活动正在进行中,旗下美国达拉斯机房VPS 65折优惠,季付赠送双倍内存(需要发工单),Central租用的Hivelocity的机房,只支持信用卡和加密货币付款,不支持paypal,需要美国独服的可以谨慎入手试试。Central怎么样?Central便宜服务器,Central自称成立于2019年,主营美国达拉斯机房Linux vps、Windows vps、专用服务器和托管...

两款半月湾 HMBcloud 春节88折日本和美国CN2 VPS主机套餐

春节期间我们很多朋友都在忙着吃好喝好,当然有时候也会偶然的上网看看。对于我们站长用户来说,基本上需要等到初八之后才会开工,现在有空就看看是否有商家的促销。这里看到来自HMBcloud半月湾服务商有提供两款春节机房方案的VPS主机88折促销活动,分别是来自洛杉矶CN2 GIA和日本CN2的方案。八八折优惠码:CNY-GIA第一、洛杉矶CN2 GIA美国原生IP地址、72小时退款保障、三网回程CN2 ...

php多线程为你推荐
相机内存卡数据恢复相机内存卡数据丢失怎么恢复苹果手机助手哪个好苹果手机助手哪个好,苹果手机助手推荐?游戏盒子哪个好游戏盒子哪个好?雅思和托福哪个好考考托福好还是雅思好行车记录仪哪个好行车记录仪什么牌子好牡丹江教育云空间登录云空间怎么登入q空间登录QQ空间经常提示要登录?电信10000宽带测速电信宽带速度360云盘360云盘干什么用的?360云盘同步版网络正常的。 提示360云盘同步版同步失败 ,文件被占用中,无法更新是什么原因
天津虚拟主机 个人域名备案流程 草根过期域名 eq2 双11秒杀 网站卫士 isp服务商 天翼云盘 电信托管 中国电信宽带测速器 新睿云 智能dns解析 深圳域名 godaddy空间 japanese50m咸熟 ncp是什么 windowsserverr2 tracert 挂马检测工具 瓦工工具 更多