//参数接收
$callback = $_GET['callback'];
$hrefs = $_GET['hrefs'];
$urlarray = explode(',',trim($hrefs,','));
$date = date('Ymd',time());
//实例化
$img = new HttpImg();
$stime = $img->getMicrotime();//开始时间
$data = $img->Curl_http($urlarray,'20');//列表数据
mkdir('./img/'.$date,0777);
foreach ((array)$data as $k=>$v){
preg_match_all("/(href|src)=(["|']?)([^ "'>]+.(jpg|png|PNG|JPG|gif))\2/i", $v, $matches[$k]);
if(count($matches[$k][3])>0){
$dataimg = $img->Curl_http($matches[$k][3],'20');//全部图片数据二进制
$j = 0;
foreach ((array)$dataimg as $kk=>$vv){
if($vv !=''){
$rand = rand(1000,9999);
$basename = time()."_".$rand.".".jpg;//保存为jpg格式的文件
$fname = './img/'.$date."https://www.jb51.net/"."$basename";
file_put_contents($fname, $vv);
$j++;
echo "创建第".$j."张图片"."$fname"."<br/>";
}else{
unset($kk,$vv);
}
}
}else{
unset($matches);
}
}
$etime = $img->getMicrotime();//结束时间
echo "用时".($etime-$stime)."秒";
exit;
测试一下效果
337张图片用时260秒左右,基本上可以做到一秒内就可以采集一张的效果,而且发现图片越到优势采集速度越明显。
我们可以看一下文件命名:也就可以做到同一时刻可以生成10张图片,
由于采用了20秒请求的时间限制,有些图片生成后有明显不全,也就是图片资源在20秒内未能完全采集,这个时间大家可以自行设置。
您可能感兴趣的文章: