相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫(xiě)文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
php使用curl代理實(shí)現(xiàn)抓取數(shù)據(jù)的方法
本文實(shí)例講述了php使用curl代理實(shí)現(xiàn)抓取數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:
<?php define ( 'IS_PROXY', true ); //是否啟用代理 function async_get_url($url_array, $wait_usec = 0) { if (!is_array($url_array)) return false; $wait_usec = intval($wait_usec); $data = array(); $handle = array(); $running = 0; $mh = curl_multi_init(); // 開(kāi)啟多線程 $i = 0; foreach($url_array as $url) { $ch = curl_init(); if (IS_PROXY) { //以下代碼設(shè)置代理服務(wù)器 //代理服務(wù)器地址http://www.cnproxy.com/proxy1.html !!Hong Kong, China的速度比較好 curl_setopt ($ch, CURLOPT_PROXY,'110.4.12.170:80' ); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect curl_setopt($ch, CURLOPT_MAXREDIRS, 7); //HTTp定向級(jí)別 curl_multi_add_handle($mh, $ch); // 把 curl resource 放進(jìn) multi curl handler 里 $handle[$i++] = $ch; } /* 執(zhí)行 */ do { $mrc = curl_multi_exec($mh, $running); if ($wait_usec > 0) /* 每個(gè) connect 要間隔多久 */ usleep($wait_usec); // 250000 = 0.25 sec } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($running && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $running); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } /* 讀取資料 */ foreach($handle as $i => $ch) { $content = curl_multi_getcontent($ch); $data[$i] = (curl_errno($ch) == 0) ? $content : false; } /* 移除 handle*/ foreach($handle as $ch) { curl_multi_remove_handle($mh, $ch); } curl_multi_close($mh); return $data; } $urls = array('http://map.baidu.com'); $re = async_get_url($urls); echo $re[0]; ?>