php curl多請(qǐng)求并發(fā)使用案例

curl大家一定使用過,但并發(fā)使用的情況估計(jì)不多寇窑。但在某些情況下確實(shí)比較有用哎媚,比如在同一請(qǐng)求里面調(diào)用多個(gè)他方接口古胆,傳統(tǒng)方法我們需要串行請(qǐng)求接口:

file_get_contents('http://a.php');//1
file_get_contents('http://b.php');//2
file_get_contents('http://c.php');//2

那在這里耗時(shí)為5秒改鲫,但運(yùn)營curl的muti方法肮街,我們只需2秒就可請(qǐng)求完畢,繼續(xù)處理后面的邏輯.代碼如下:

<?php

$ch = array();
$res = array();
$conn = array();

$urls = array(
    'baidu' => "http://www.baidu.com/",
    'cheyun' => "http://auto.jrj.com.cn/",
    'w3c' => "http://www.w3cschool.cc/",
);

// 創(chuàng)建批處理cURL句柄
$mh = curl_multi_init();

foreach ($urls as $i => $url) {
    // 創(chuàng)建一對(duì)cURL資源
    $conn[$i] = curl_init(); //初始化各個(gè)子連接  
    // 設(shè)置URL和相應(yīng)的選項(xiàng)
    curl_setopt($conn[$i], CURLOPT_URL, $url);
    curl_setopt($conn[$i], CURLOPT_HEADER, 0);
    curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);//不直接輸出到瀏覽器 
    curl_setopt($conn[$i], CURLOPT_TIMEOUT, 10);
    //302跳轉(zhuǎn)
    curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1);

    // 增加句柄
    curl_multi_add_handle($mh, $conn[$i]);//加入多處理句柄  
}


$active = null;//連接數(shù)  

//防卡死寫法:執(zhí)行批處理句柄
do {
    //這里$active會(huì)被改寫成當(dāng)前未處理數(shù)  
    //全部處理成功$active會(huì)變成0  
    $mrc = curl_multi_exec($mh, $active);
     //這個(gè)循環(huán)的目的是盡可能的讀寫饮笛,直到無法繼續(xù)讀寫為止(返回CURLM_OK)  
     //返回(CURLM_CALL_MULTI_PERFORM)就表示還能繼續(xù)向網(wǎng)絡(luò)讀寫  
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

//如果一切正常咨察,那么我們要做一個(gè)輪詢,每隔一定時(shí)間(默認(rèn)是1秒)重新請(qǐng)求一次  
//這就是curl_multi_select的作用,它在等待過程中福青,如果有就返回目前可以讀寫的句柄數(shù)量,以便  
//繼續(xù)讀寫操作,0則沒有可以讀寫的句柄(完成了)  
while ($active && $mrc == CURLM_OK) {  //直到出錯(cuò)或者全部讀寫完畢  
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);

        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

foreach ($urls as $i => $url) {
    //獲取當(dāng)前解析的cURL的相關(guān)傳輸信息
    $info = curl_multi_info_read($mh);

    //獲取請(qǐng)求頭信息
    $heards = curl_getinfo($conn[$i]);

    var_dump($heards);

    //獲取輸出的文本流
    $res[$i] = curl_multi_getcontent($conn[$i]);

    // 移除curl批處理句柄資源中的某個(gè)句柄資源
    curl_multi_remove_handle($mh, $conn[$i]);

    //關(guān)閉cURL會(huì)話
    curl_close($conn[$i]);
}

//關(guān)閉全部句柄
curl_multi_close($mh);

//var_dump($res);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摄狱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子无午,更是在濱河造成了極大的恐慌媒役,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宪迟,死亡現(xiàn)場(chǎng)離奇詭異酣衷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)踩验,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來商玫,“玉大人箕憾,你說我怎么就攤上這事∪” “怎么了袭异?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長炬藤。 經(jīng)常有香客問我御铃,道長碴里,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任上真,我火速辦了婚禮咬腋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘睡互。我一直安慰自己根竿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布就珠。 她就那樣靜靜地躺著寇壳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪妻怎。 梳的紋絲不亂的頭發(fā)上壳炎,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音逼侦,去河邊找鬼匿辩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛偿洁,可吹牛的內(nèi)容都是我干的撒汉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涕滋,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼睬辐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宾肺,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤溯饵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后锨用,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丰刊,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年增拥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啄巧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掌栅,死狀恐怖秩仆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猾封,我是刑警寧澤澄耍,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響齐莲,放射性物質(zhì)發(fā)生泄漏痢站。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一选酗、第九天 我趴在偏房一處隱蔽的房頂上張望阵难。 院中可真熱鬧,春花似錦星掰、人聲如沸多望。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怀偷。三九已至,卻和暖如春播玖,著一層夾襖步出監(jiān)牢的瞬間椎工,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國打工蜀踏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留维蒙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓果覆,卻偏偏與公主長得像颅痊,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子局待,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容