成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP多線程批量采集下載美女圖片的實現代碼

開發 后端 開發工具
使用curl的多線程,另外curl可以設置請求時間,遇到很慢的url資源,可以果斷的放棄,這樣沒有阻塞,另外有多線程請求,效率應該比較高

使用curl的多線程,另外curl可以設置請求時間,遇到很慢的url資源,可以果斷的放棄,這樣沒有阻塞,另外有多線程請求,效率應該比較高

[[131997]]

下面是代碼實現:

  1. /**  
  2.      * curl 多線程  
  3.      * @author http://www.lai18.com 
  4.      * @param array $array 并行網址  
  5.      * @param int $timeout 超時時間 
  6.      * @return mix  
  7.      */ 
  8.  public function Curl_http($array,$timeout='15'){ 
  9.       $res = array(); 
  10.  
  11.       $mh = curl_multi_init();//創建多個curl語柄 
  12.  
  13.       foreach($array as $k=>$url){ 
  14.           $conn[$k]=curl_init($url);//初始化 
  15.  
  16.           curl_setopt($conn[$k], CURLOPT_TIMEOUT, $timeout);//設置超時時間 
  17.           curl_setopt($conn[$k], CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); 
  18.           curl_setopt($conn[$k], CURLOPT_MAXREDIRS, 7);//HTTp定向級別 ,7最高 
  19.           curl_setopt($conn[$k], CURLOPT_HEADER, false);//這里不要header,加塊效率 
  20.           curl_setopt($conn[$k], CURLOPT_FOLLOWLOCATION, 1); // 302 redirect 
  21.           curl_setopt($conn[$k], CURLOPT_RETURNTRANSFER,1);//要求結果為字符串且輸出到屏幕上           
  22.     curl_setopt($conn[$k], CURLOPT_HTTPGET, true); 
  23.  
  24.           curl_multi_add_handle ($mh,$conn[$k]); 
  25.       } 
  26.        //防止死循環耗死cpu 這段是根據網上的寫法 
  27.           do { 
  28.               $mrc = curl_multi_exec($mh,$active);//當無數據,active=true 
  29.           } while ($mrc == CURLM_CALL_MULTI_PERFORM);//當正在接受數據時 
  30.           while ($active and $mrc == CURLM_OK) {//當無數據時或請求暫停時,active=true 
  31.               if (curl_multi_select($mh) != -1) { 
  32.                   do { 
  33.                       $mrc = curl_multi_exec($mh$active); 
  34.                   } while ($mrc == CURLM_CALL_MULTI_PERFORM); 
  35.               } 
  36.           } 
  37.  
  38.       foreach ($array as $k => $url) { 
  39.             if(!curl_errno($conn[$k])){ 
  40.              $data[$k]=curl_multi_getcontent($conn[$k]);//數據轉換為array 
  41.              $header[$k]=curl_getinfo($conn[$k]);//返回http頭信息 
  42.              curl_close($conn[$k]);//關閉語柄 
  43.              curl_multi_remove_handle($mh  , $conn[$k]);   //釋放資源  
  44.             }else
  45.              unset($k,$url); 
  46.             } 
  47.           } 
  48.  
  49.           curl_multi_close($mh); 
  50.  
  51.           return $data
  52.  
  53.    } 
  54.  
  55. //參數接收 
  56. $callback = $_GET['callback']; 
  57. $hrefs = $_GET['hrefs']; 
  58. $urlarray = explode(',',trim($hrefs,',')); 
  59. $date = date('Ymd',time()); 
  60. //實例化 
  61. $img = new HttpImg(); 
  62. $stime = $img->getMicrotime();//開始時間 
  63.  
  64. $data = $img->Curl_http($urlarray,'20');//列表數據 
  65. mkdir('./img/'.$date,0777); 
  66. foreach ((array)$data as $k=>$v){ 
  67.  preg_match_all("/(href|src)=(["|']?)([^ "'>]+.(jpg|png|PNG|JPG|gif))\2/i", $v$matches[$k]); 
  68.  
  69.  if(count($matches[$k][3])>0){ 
  70.   $dataimg = $img->Curl_http($matches[$k][3],'20');//全部圖片數據二進制 
  71.   $j = 0; 
  72.   foreach ((array)$dataimg as $kk=>$vv){ 
  73.    if($vv !=''){ 
  74.     $rand = rand(1000,9999); 
  75.     $basename = time()."_".$rand.".".jpg;//保存為jpg格式的文件 
  76.     $fname = './img/'.$date."/"."$basename"
  77.     file_put_contents($fname$vv);    
  78.     $j++; 
  79.     echo "創建第".$j."張圖片"."$fname"."<br/>"
  80.    }else
  81.     unset($kk,$vv); 
  82.    } 
  83.   } 
  84.  }else
  85.   unset($matches); 
  86.  } 
  87. $etime = $img->getMicrotime();//結束時間 
  88. echo "用時".($etime-$stime)."秒"
  89. exit

 

責任編輯:王雪燕 來源: hello_katty的專欄
相關推薦

2010-08-04 11:37:44

PHP NFS

2016-09-06 21:09:35

Phpgd庫圖片水印

2009-11-24 14:45:08

PHP批量上傳圖片

2010-08-31 13:56:38

PHP5多線程

2015-07-01 09:35:16

Java批量下載網絡圖片

2009-09-14 19:39:14

批量線程同步

2010-07-17 00:53:50

CMD Telnet

2009-08-12 17:19:51

ASP.NET圖片加水

2015-06-04 12:53:18

2015-02-03 15:06:23

android多線程下載

2025-06-18 10:05:26

2022-03-17 08:04:56

圖片canvas音符

2011-06-20 12:28:30

2009-12-02 17:22:22

PHP抓取圖片

2011-05-31 13:29:40

Android 多線程

2014-12-31 15:42:21

Android多線程軟件下載

2012-12-25 11:39:20

Pythoncrawler

2010-03-17 19:24:38

Java多線程循環

2024-08-19 09:04:50

2011-08-29 11:25:29

清空service bSQL Server
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操夜夜爽 | 日批免费观看 | 欧美一区二区三区视频 | 高清av电影| 久久91精品国产一区二区三区 | 秋霞电影一区二区 | 国产一区二区三区在线 | 免费视频久久 | 精品一区二区在线看 | 久久精品久久综合 | 在线中文视频 | 精品国产一区二区三区久久影院 | 亚洲精品2区 | 欧美日韩中文在线 | 一区二区三区中文 | 午夜视频在线 | 国产高清无av久久 | 亚洲欧美自拍偷拍视频 | www.yw193.com | 你懂的国产 | 精品视频导航 | 超碰在线人 | 91网站在线播放 | 国产福利在线 | 99国产精品视频免费观看一公开 | 国产精品一区一区 | 殴美成人在线视频 | 久久精品视频91 | 久久99精品久久久久久国产越南 | 性一交一乱一透一a级 | 成人av片在线观看 | 亚洲精品久久久一区二区三区 | 中文字幕电影在线观看 | 国产男女视频 | 久草在线中文888 | 福利av在线| 成人精品久久久 | a级黄色毛片免费播放视频 国产精品视频在线观看 | 在线看av的网址 | 少妇午夜一级艳片欧美精品 | 亚洲欧美综合网 |