亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

php結合curl實現多線程抓取

2024-04-25 20:38:42
字體:
來源:轉載
供稿:網友

php結合curl實現多線程抓取

<?php

/*

curl 多線程抓取

*/

/**

* curl 多線程


*

* @param array $array 并行網址

* @param int $timeout 超時時間

* @return array

*/

function Curl_http($array,$timeout){

$res = array();

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

$startime = getmicrotime();

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定向級別

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

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

curl_setopt($conn[$k],CURLOPT_RETURNTRANSFER,1);

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) {

curl_error($conn[$k]);

$res[$k]=curl_multi_getcontent($conn[$k]);//獲得返回信息

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

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

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

}

curl_multi_close($mh);

$endtime = getmicrotime();

$diff_time = $endtime - $startime;

return array('diff_time'=>$diff_time,

'return'=>$res,

'header'=>$header

);

}

//計算當前時間

function getmicrotime() {

list($usec, $sec) = explode(" ",microtime());

return ((float)$usec + (float)$sec);

}

//測試一下,curl 三個網址

$array = array(

"http://www.weibo.com/",

"http://www.renren.com/",

"http://www.qq.com/"

);

$data = Curl_http($array,'10');//調用

var_dump($data);//輸出

//如果POST的數據大于1024字節,curl并不會直接就發起POST請求

//發送請求時,header中包含一個空的Expect。curl_setopt($ch, CURLOPT_HTTPHEADER, array("Expect:"));

?>

我們再來看幾個例子

(1)下面這段代碼是實現抓取多個URL,然后將抓取的URL的頁面代碼寫入指定的文件

$urls = array(

'http://www.jb51.net/',

'http://www.google.com/',

'http://www.example.com/'

); // 設置要抓取的頁面URL

$save_to='/test.txt'; // 把抓取的代碼寫入該文件

$st = fopen($save_to,"a");

$mh = curl_multi_init();

foreach ($urls as $i => $url) {

$conn[$i] = curl_init($url);

curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");

curl_setopt($conn[$i], CURLOPT_HEADER ,0);

curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);

curl_setopt($conn[$i], CURLOPT_FILE,$st); // 將爬取的代碼寫入文件

curl_multi_add_handle ($mh,$conn[$i]);

} // 初始化

do {

curl_multi_exec($mh,$active);

} while ($active); // 執行

foreach ($urls as $i => $url) {

curl_multi_remove_handle($mh,$conn[$i]);

curl_close($conn[$i]);

} // 結束清理

curl_multi_close($mh);

fclose($st);

(2)下面這段代碼和上面差不多意思,只不過這個地方是將獲得的代碼先放入變量,然后再將獲取到的內容寫入指定的文件

$urls = array(

'http://www.jb51.net/',

'http://www.google.com/',

'http://www.example.com/'

);

$save_to='/test.txt'; // 把抓取的代碼寫入該文件

$st = fopen($save_to,"a");

$mh = curl_multi_init();

foreach ($urls as $i => $url) {

$conn[$i] = curl_init($url);

curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");

curl_setopt($conn[$i], CURLOPT_HEADER ,0);

curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60);

curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 不將爬取代碼寫到瀏覽器,而是轉化為字符串

curl_multi_add_handle ($mh,$conn[$i]);

}

do {

curl_multi_exec($mh,$active);

} while ($active);

foreach ($urls as $i => $url) {

$data = curl_multi_getcontent($conn[$i]); // 獲得爬取的代碼字符串

fwrite($st,$data); // 將字符串寫入文件

} // 獲得數據變量,并寫入文件

foreach ($urls as $i => $url) {

curl_multi_remove_handle($mh,$conn[$i]);

curl_close($conn[$i]);

}

curl_multi_close($mh);

fclose($st);

(3)下面這段代碼實現的是利用 PHP 的 Curl Functions 實現并發多線程下載文件

$urls=array(

'http://www.jb51.net/5w.zip',

'http://www.jb51.net/5w.zip',

'http://www.jb51.net/5w.zip'

);

$save_to='./home/';

$mh=curl_multi_init();

foreach($urls as $i=>$url){

$g=$save_to.basename($url);

if(!is_file($g)){

$conn[$i]=curl_init($url);

$fp[$i]=fopen($g,"w");

curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");

curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);

curl_setopt($conn[$i],CURLOPT_HEADER ,0);

curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);

curl_multi_add_handle($mh,$conn[$i]);

}

}

do{

$n=curl_multi_exec($mh,$active);

}while($active);

foreach($urls as $i=>$url){

curl_multi_remove_handle($mh,$conn[$i]);

curl_close($conn[$i]);

fclose($fp[$i]);

}

curl_multi_close($mh);$urls=array(

'http://www.jb51.net/5w.zip',

'http://www.jb51.net/5w.zip',

'http://www.jb51.net/5w.zip'

);

$save_to='./home/';

$mh=curl_multi_init();

foreach($urls as $i=>$url){

$g=$save_to.basename($url);

if(!is_file($g)){

$conn[$i]=curl_init($url);

$fp[$i]=fopen($g,"w");

curl_setopt($conn[$i],CURLOPT_USERAGENT,"Mozilla/4.0(compatible; MSIE 7.0; Windows NT 6.0)");

curl_setopt($conn[$i],CURLOPT_FILE,$fp[$i]);

curl_setopt($conn[$i],CURLOPT_HEADER ,0);

curl_setopt($conn[$i],CURLOPT_CONNECTTIMEOUT,60);

curl_multi_add_handle($mh,$conn[$i]);

}

}

do{

$n=curl_multi_exec($mh,$active);

}while($active);

foreach($urls as $i=>$url){

curl_multi_remove_handle($mh,$conn[$i]);

curl_close($conn[$i]);

fclose($fp[$i]);

}

curl_multi_close($mh);

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人精品一区二区三区| 欧美一区亚洲一区| 性欧美视频videos6一9| 97激碰免费视频| 亚洲男人av电影| 欧美一区二区大胆人体摄影专业网站| 精品动漫一区二区三区| 日韩欧中文字幕| 欧美性受xxxx黑人猛交| 亚洲国产精品99| 中日韩美女免费视频网址在线观看| 91po在线观看91精品国产性色| 亚洲一区二区三区久久| 性色av一区二区咪爱| 日韩av在线免费观看| 国产精品白丝jk喷水视频一区| 欧美噜噜久久久xxx| 2018国产精品视频| 在线日韩中文字幕| 久久69精品久久久久久久电影好| 91在线免费看网站| 精品调教chinesegay| 中文字幕在线亚洲| 国产精品伦子伦免费视频| 精品中文字幕在线2019| 欧美黑人性猛交| 亚洲人成啪啪网站| 亚洲欧洲一区二区三区在线观看| 久久影视免费观看| 北条麻妃99精品青青久久| 亚洲日本欧美日韩高观看| 国产精品三级在线| 久久五月情影视| 国产97在线观看| 亚洲精品黄网在线观看| 欧美性20hd另类| 亚洲剧情一区二区| 亚洲国产精品小视频| 国产成人精品电影| 91性高湖久久久久久久久_久久99| 久久综合久久88| 日本精品视频在线播放| 亚洲的天堂在线中文字幕| 亚洲www永久成人夜色| 美女视频久久黄| 亚洲色图综合网| 欧美日韩美女在线| xxxx性欧美| 亚洲中国色老太| 日韩美女视频免费看| 视频一区视频二区国产精品| 亚洲欧美日韩高清| 国产美女精品免费电影| 日韩高清人体午夜| 国产精品美女主播在线观看纯欲| 欧美高清在线播放| 国产日韩专区在线| 91在线免费视频| 成人a级免费视频| 久久国产精品影视| 亚洲第一级黄色片| 69av视频在线播放| 亚洲欧美在线磁力| 在线观看精品国产视频| 精品国产福利视频| 欧美精品18videos性欧| 国产日韩欧美在线播放| 在线观看国产精品淫| 亚洲精品乱码久久久久久金桔影视| 久久精品视频亚洲| 91中文字幕在线观看| 日韩在线视频免费观看| 欧美中文字幕在线视频| 欧美激情精品久久久| 欧美黑人国产人伦爽爽爽| 91亚洲精品久久久| 国产精品大片wwwwww| 欧美黑人巨大精品一区二区| 亚洲欧美日本伦理| 国产成人精品在线播放| 国产精品亚洲第一区| 国产伦精品免费视频| 综合网中文字幕| 久久精品久久精品亚洲人| 国产精品露脸av在线| 欧美在线日韩在线| 国产成人精品电影久久久| 操人视频在线观看欧美| 亚洲男人的天堂网站| 亚洲高清福利视频| 久久天天躁狠狠躁夜夜躁| 亚洲国产日韩欧美在线图片| 亚洲欧美中文日韩在线| 亚洲欧美一区二区三区在线| 欧美极品欧美精品欧美视频| 久久中文字幕在线| 成人av在线亚洲| 欧美日韩国产影院| 国产一区二区日韩| 一本大道香蕉久在线播放29| 在线播放国产一区中文字幕剧情欧美| 黄网动漫久久久| 国内精品小视频在线观看| 国产精品精品一区二区三区午夜版| 91日本在线视频| 美女撒尿一区二区三区| 97国产精品视频人人做人人爱| 欧美国产日本高清在线| 亚洲精品av在线| 俺去亚洲欧洲欧美日韩| 成人精品一区二区三区电影免费| 亚洲欧洲国产伦综合| 亚洲永久在线观看| 亚洲免费成人av电影| 91精品国产高清久久久久久| 亚洲国产精品电影| 欧美激情手机在线视频| 精品国偷自产在线| 色综合视频一区中文字幕| 91嫩草在线视频| 色偷偷亚洲男人天堂| 色综合男人天堂| 久久精品国产69国产精品亚洲| 久久九九免费视频| 日韩av电影院| 色综合久综合久久综合久鬼88| 成人国产精品久久久久久亚洲| 欧美亚州一区二区三区| 亚洲一级免费视频| 色老头一区二区三区| 国产精品丝袜久久久久久不卡| 欧美激情欧美激情| 精品久久中文字幕久久av| 精品久久中文字幕久久av| 欧美日韩国产限制| 国产精品色午夜在线观看| 国产有码一区二区| 亚洲美腿欧美激情另类| 美女视频久久黄| 在线观看欧美视频| 成人在线视频福利| 91免费精品国偷自产在线| 亚洲九九九在线观看| 久久精品国产成人| 欧美大秀在线观看| 欧美三级免费观看| 久久精品国产99国产精品澳门| 中文字幕亚洲无线码a| 欧美电影在线观看完整版| 精品国产美女在线| 精品人伦一区二区三区蜜桃免费| 深夜精品寂寞黄网站在线观看| 亲爱的老师9免费观看全集电视剧| 国产精品视频1区| 精品偷拍一区二区三区在线看| 久久久久日韩精品久久久男男| 久久久久国产视频| 日韩亚洲欧美中文高清在线| 国产精品美女久久久久av超清| 国产一区二区三区精品久久久| 欧美性xxxx极品hd满灌| 久久久999精品免费| 亚洲欧美激情视频| 国产日韩精品电影|