phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解

phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解

ID:34707971

大?。?1.35 KB

頁數(shù):4頁

時(shí)間:2019-03-09

phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解_第1頁
phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解_第2頁
phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解_第3頁
phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解_第4頁
資源描述:

《phpcurl多線程實(shí)現(xiàn)原理與實(shí)例詳解》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、PHPCurl多線程實(shí)現(xiàn)原理與實(shí)例詳解因?yàn)楣ぷ髦形覀兘?jīng)常會(huì)需要使用到Curl多線程來處理一些事情,不得己就深入了對(duì)Curl多線程研究了,下面小編來給各位同學(xué)介紹一下Curl多線程實(shí)例與原理吧.相信許多人對(duì)php手冊(cè)中語焉不詳?shù)腸url_multi一族的函數(shù)頭疼不已,它們文檔少,給的例子更是簡(jiǎn)單的讓你無從借鑒,我也曾經(jīng)找了許多網(wǎng)頁,都沒見一個(gè)完整的應(yīng)用例子。1.curl_multi_add_handle??2.curl_multi_close??3.curl_multi_exec??4.curl_multi_getcontent??5.curl_multi

2、_info_read??6.curl_multi_init??7.curl_multi_remove_handle??8.curl_multi_select?一般來說,想到要用這些函數(shù)時(shí),目的顯然應(yīng)該是要同時(shí)請(qǐng)求多個(gè)url,而不是一個(gè)一個(gè)依次請(qǐng)求,否則不如自己循環(huán)去調(diào)curl_exec好了.步驟總結(jié)如下:第一步:調(diào)用curl_multi_init第二步:循環(huán)調(diào)用curl_multi_add_handle,這一步需要注意的是,curl_multi_add_handle的第二個(gè)參數(shù)是由curl_init而來的子handle。第三步:持續(xù)調(diào)用curl_mult

3、i_exec第四步:根據(jù)需要循環(huán)調(diào)用curl_multi_getcontent獲取結(jié)果第五步:調(diào)用curl_multi_remove_handle,并為每個(gè)字handle調(diào)用curl_close第六步:調(diào)用curl_multi_close?這里有PHP手冊(cè)上的例子,代碼如下:1.

4、p.net/");??2.curl_setopt($ch1,?CURLOPT_HEADER,?0);??3.curl_setopt($ch2,?CURLOPT_URL,?"http://www.php.net/");??4.curl_setopt($ch2,?CURLOPT_HEADER,?0);??5.???6.//?創(chuàng)建批處理cURL句柄??7.$mh?=?curl_multi_init();??8.???9.//?增加2個(gè)句柄??10.curl_multi_add_handle($mh,$ch1);??11.curl_multi_add_handl

5、e($mh,$ch2);??12.???13.$active?=?null;??14.//?執(zhí)行批處理句柄??15.do?{??16.????$mrc?=?curl_multi_exec($mh,?$active);??17.}?while?($mrc?==?CURLM_CALL_MULTI_PERFORM);??18.???19.while?($active?&&?$mrc?==?CURLM_OK)?{??20.????if?(curl_multi_select($mh)?!=?-1)?{??21.????????do?{??22.??????????

6、??$mrc?=?curl_multi_exec($mh,?$active);??23.????????}?while?($mrc?==?CURLM_CALL_MULTI_PERFORM);??24.????}??25.}??26.//?關(guān)閉全部句柄??27.curl_multi_remove_handle($mh,?$ch1);??28.curl_multi_remove_handle($mh,?$ch2);??29.curl_multi_close($mh);??30.?>?整個(gè)使用過程差不多就是這樣,但是,這個(gè)簡(jiǎn)單代碼有個(gè)致命弱點(diǎn),就是在do循環(huán)的

7、那段,在整個(gè)url請(qǐng)求期間是個(gè)死循環(huán),它會(huì)輕易導(dǎo)致CPU占用100%。現(xiàn)在我們來改進(jìn)它,這里要用到一個(gè)幾乎沒有任何文檔的函數(shù)curl_multi_select了,雖然C的curl庫對(duì)select有說明,但是,php里的接口和用法確與C中有不同。把上面do的那段改成下面這樣,實(shí)例代碼如下:1.do?{??1.????????????????????????$mrc?=?curl_multi_exec($mh,$active);??2.?????????????????}?while?($mrc?==?CURLM_CALL_MULTI_PERFORM);??

8、3.????????????????while?($active?and?$mr

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。