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

首頁 > 語言 > PHP > 正文

php中foreach結合curl實現多線程的方法分析

2024-05-04 23:49:58
字體:
來源:轉載
供稿:網友

本文實例講述了php中foreach結合curl實現多線程的方法。分享給大家供大家參考,具體如下:

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

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

方法1:循環請求

$sr=array(url_1,url_2,url_3);foreach ($sr as $k=>$v) { $curlPost=$v.'?f=傳入參數'; $ch = curl_init($curlPost) ; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 獲取數據返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在啟用 CURLOPT_RETURNTRANSFER 時候將獲取數據返回 $data = curl_exec($ch) ; echo $k.'##:'.$data.'<br>';}curl_close($ch);

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

方法2:多線程循環

<?phpmulti_threads_request($nodes){  $mh = curl_multi_init();  $curl_array = array();  foreach($nodes as $i => $url)  {   $curl_array[$i] = curl_init($url);   curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);   curl_multi_add_handle($mh, $curl_array[$i]);  }  $running = NULL;  do {   usleep(10000);   curl_multi_exec($mh,$running);  } while($running > 0);  $res = array();  foreach($nodes as $i => $url)  {   $res[$url] = curl_multi_getcontent($curl_array[$i]);  }  foreach($nodes as $i => $url){   curl_multi_remove_handle($mh, $curl_array[$i]);  }  curl_multi_close($mh);  return $res;}print_r(multi_threads_request(array( 'http://m.survivalescaperooms.com', 'http://sucai.vevb.com',));

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

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 会理县| 宜章县| 文昌市| 枣强县| 崇义县| 融水| 平江县| 泗洪县| 裕民县| 灵璧县| 广饶县| 兖州市| 兴化市| 安平县| 张掖市| 从江县| 左贡县| 紫金县| 房产| 武山县| 德阳市| 贵定县| 泰安市| 基隆市| 荆门市| 通渭县| 鄂伦春自治旗| 厦门市| 马尔康县| 毕节市| 铁岭县| 公安县| 巴南区| 黄梅县| 肥东县| 大竹县| 黄石市| 依兰县| 韶关市| 黄浦区| 乐东|