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

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

3C云1核1G 9.9元 4核4G 16元 美国Cera 2核4G 24元

3C云互联怎么样?3C云互联专注免备案香港美国日本韩国台湾云主机vps服务器,美国高防CN2GIA,香港CN2GIA,顶级线路优化,高端品质售后无忧!致力于对互联网云计算科技深入研发与运营的极客共同搭建而成,将云计算与网络核心技术转化为最稳定,安全,高速以及极具性价比的云服务器等产品提供给用户!专注为个人开发者用户,中小型,大型企业用户提供一站式核心网络云端服务部署,促使用户云端部署化简为零,轻松...

易探云(QQ音乐绿钻)北京/深圳云服务器8核8G10M带宽低至1332.07元/年起

易探云怎么样?易探云香港云服务器比较有优势,他家香港BGP+CN2口碑不错,速度也很稳定。尤其是今年他们动作很大,推出的香港云服务器有4个可用区价格低至18元起,试用过一个月的用户基本会续费,如果年付的话还可以享受8.5折或秒杀价格。今天,云服务器网(yuntue.com)小编推荐一下易探云国内云服务器优惠活动,北京和深圳这二个机房的云服务器2核2G5M带宽低至330.66元/年,还有高配云服务器...

php多线程为你推荐
金士顿4g内存条4g金士顿内存怎么样软银支付软银支付可靠吗?滴滴软银合资哪款车比较适合跑滴滴租车平台哪个好想租车,什么平台好浏览器哪个好哪个浏览器好用?燃气热水器和电热水器哪个好电热水器和燃气热水器哪一个更安全,且更节省能源?985和211哪个好985大学好 还是211是什么意思少儿英语哪个好少儿英语,那个好一些?浏览器哪个好用哪个浏览器比较好浮动利率和固定利率哪个好对于企业来说固定利率贷款与浮动利率贷款优缺点各是什么?谢谢了。
高防dns 樊云 kvmla linode代购 美国php空间 国外php空间 国外免费空间 500m空间 骨干网络 促正网秒杀 165邮箱 idc资讯 91vps 爱奇艺vip免费领取 阿里云官方网站 重庆电信服务器托管 ledlamp godaddy空间 阵亡将士纪念日 789电视剧网 更多