国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php中foreach curl實現(xiàn)多線程例子

2024-05-04 23:07:25
字體:
供稿:網(wǎng)友

多線程是php不支持的但我們可以通過foreach來偽多線程了,但這個偽多線程速度不一定比單線程要單到哪里去了,具體來看個例子.

在利用foreach語句循環(huán)圖片URL,并通過CURL將所有圖片進行本地保存的函數(shù)時,出現(xiàn)了只能采集到一個的問題,現(xiàn)將foreach和CURL結(jié)合進行多URL請求的方法進行下總結(jié).

方法1:循環(huán)請求

  1. $sr=array(url_1,url_2,url_3); 
  2. foreach ($sr as $k=>$v) { 
  3.     $curlPost=$v.'?f=傳入?yún)?shù)'
  4.     $ch = curl_init($curlPost) ; 
  5.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 獲取數(shù)據(jù)返回 
  6.     curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在啟用 CURLOPT_RETURNTRANSFER 時候?qū)@取數(shù)據(jù)返回 
  7.     $data = curl_exec($ch) ; //開源軟件:Vevb.com 
  8.     echo $k.'##:'.$data.'<br>'
  9. curl_close($ch); 

上面代碼需要特別注意的是,curl_close 一定要放在foreach循環(huán)結(jié)束的外面,如果放在里面的話,就會出現(xiàn)我上面提到的多個IMGURL,只能采集到一個URL的問題.

方法2:多線程循環(huán)

  1. <?php 
  2. multi_threads_request($nodes){ 
  3.         $mh = curl_multi_init(); 
  4.         $curl_array = array(); 
  5.         foreach($nodes as $i => $url
  6.         { 
  7.             $curl_array[$i] = curl_init($url); 
  8.             curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true); 
  9.             curl_multi_add_handle($mh$curl_array[$i]); 
  10.         } 
  11.         $running = NULL; 
  12.         do { 
  13.             usleep(10000); 
  14.             curl_multi_exec($mh,$running); 
  15.         } while($running > 0); 
  16.         $res = array(); 
  17.         foreach($nodes as $i => $url
  18.         { 
  19.             $res[$url] = curl_multi_getcontent($curl_array[$i]); 
  20.         } 
  21.         foreach($nodes as $i => $url){ 
  22.             curl_multi_remove_handle($mh$curl_array[$i]); 
  23.         } 
  24.         curl_multi_close($mh); 
  25.         return $res
  26. print_r(multi_threads_request(array
  27.     'http://www.survivalescaperooms.com'
  28.     'http://qq.Vevb.com'
  29. ));  

這里主要利用curl_multi_init()實現(xiàn)多個url 的請求,不過由于php自身并不支持多線程,所以偽多線程速度也不見得會比單線程快.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 南木林县| 泰州市| 井陉县| 商水县| 平邑县| 安远县| 西平县| 三亚市| 阳泉市| 冕宁县| 洪雅县| 兰坪| 电白县| 八宿县| 芜湖市| 东明县| 南漳县| 申扎县| 虹口区| 南郑县| 溧水县| 龙山县| 饶阳县| 兴城市| 鄢陵县| 贞丰县| 当雄县| 通城县| 无锡市| 南投市| 桃园县| 绥德县| 岳西县| 南开区| 漳浦县| 宁强县| 亚东县| 星座| 皮山县| 闵行区| 克拉玛依市|