日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php批量采集电视剧,如何通过PHP多线程批量采集下载远程网站图片代码实例

發布時間:2025/3/15 php 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php批量采集电视剧,如何通过PHP多线程批量采集下载远程网站图片代码实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/**

*?curl?多線程

*?@author?http://www.lai18.com

*?@param?array?$array?并行網址

*?@param?int?$timeout?超時時間

*?@return?mix

*/

public?function?Curl_http($array,$timeout='15'){

$res?=?array();

$mh?=?curl_multi_init();//創建多個curl語柄

foreach($array?as?$k=>$url){

$conn[$k]=curl_init($url);//初始化

curl_setopt($conn[$k],?CURLOPT_TIMEOUT,?$timeout);//設置超時時間

curl_setopt($conn[$k],?CURLOPT_USERAGENT,?'Mozilla/5.0?(compatible;?MSIE?5.01;?Windows?NT?5.0)');

curl_setopt($conn[$k],?CURLOPT_MAXREDIRS,?7);//HTTp定向級別?,7最高

curl_setopt($conn[$k],?CURLOPT_HEADER,?false);//這里不要header,加塊效率

curl_setopt($conn[$k],?CURLOPT_FOLLOWLOCATION,?1);?//?302?redirect

curl_setopt($conn[$k],?CURLOPT_RETURNTRANSFER,1);//要求結果為字符串且輸出到屏幕上

curl_setopt($conn[$k],?CURLOPT_HTTPGET,?true);

curl_multi_add_handle?($mh,$conn[$k]);

}

//防止死循環耗死cpu?這段是根據網上的寫法

do?{

$mrc?=?curl_multi_exec($mh,$active);//當無數據,active=true

}?while?($mrc?==?CURLM_CALL_MULTI_PERFORM);//當正在接受數據時

while?($active?and?$mrc?==?CURLM_OK)?{//當無數據時或請求暫停時,active=true

if?(curl_multi_select($mh)?!=?-1)?{

do?{

$mrc?=?curl_multi_exec($mh,?$active);

}?while?($mrc?==?CURLM_CALL_MULTI_PERFORM);

}

}

foreach?($array?as?$k?=>?$url)?{

if(!curl_errno($conn[$k])){

$data[$k]=curl_multi_getcontent($conn[$k]);//數據轉換為array

$header[$k]=curl_getinfo($conn[$k]);//返回http頭信息

curl_close($conn[$k]);//關閉語柄

curl_multi_remove_handle($mh??,?$conn[$k]);???//釋放資源

}else{

unset($k,$url);

}

}

curl_multi_close($mh);

return?$data;

}

//參數接收

$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("/(hrefsrc)=(["']?)([^?"'>]+.(jpgpngPNGJPGgif))\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."/"."$basename";

file_put_contents($fname,?$vv);

$j++;

echo?"創建第".$j."張圖片"."$fname"."

";

}else{

unset($kk,$vv);

}

}

}else{

unset($matches);

}

}

$etime?=?$img->getMicrotime();//結束時間

echo?"用時".($etime-$stime)."秒";

exit;

總結

以上是生活随笔為你收集整理的php批量采集电视剧,如何通过PHP多线程批量采集下载远程网站图片代码实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。