PHP使用CURL_MULTI實現(xiàn)多線程采集的例子
這兩天有一客戶定制了一個免登錄發(fā)布模塊,因為在模塊中需要涉及到很多圖片下載的問題,考慮到性能問題,所以特別寫了一個CURL_MULTI遠程采集網(wǎng)頁的函數(shù),以方便以后使用,估計以后都不會使用原來的單線程curl函數(shù)去foreach了,其性能對比很明顯的。同樣獲取我的博客的十個不同網(wǎng)頁,curl_multi:4.5246081352234,file_get_contents:33.001797914505,將近8倍的效率,可想而知,如果在附件更多的情況下,性能差異就越明顯了,希望對您有所幫助!
<?php
$text = remote(array('http://www.dbjr.com.cn/','http://www.baidu.com/'));
print_r($text);
function remote($urls) {
if (!is_array($urls) or count($urls) == 0) {
return false;
}
$curl = $text = array();
$handle = curl_multi_init();
foreach($urls as $k => $v) {
$nurl[$k]= preg_replace('~([^:\/\.]+)~ei', "rawurlencode('\\1')", $v);
$curl[$k] = curl_init($nurl[$k]);
curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl[$k], CURLOPT_HEADER, 0);
curl_multi_add_handle ($handle, $curl[$k]);
}
$active = null;
do {
$mrc = curl_multi_exec($handle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($handle) != -1) {
do {
$mrc = curl_multi_exec($handle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
foreach ($curl as $k => $v) {
if (curl_error($curl[$k]) == "") {
$text[$k] = (string) curl_multi_getcontent($curl[$k]);
}
curl_multi_remove_handle($handle, $curl[$k]);
curl_close($curl[$k]);
}
curl_multi_close($handle);
return $text;
}
- 使用pthreads實現(xiàn)真正的PHP多線程(需PHP5.3以上版本)
- php pthreads多線程的安裝與使用
- php使用pthreads v3多線程實現(xiàn)抓取新浪新聞信息操作示例
- PHP pthreads v3下的Volatile簡介與使用方法示例
- PHP pthreads v3使用中的一些坑和注意點分析
- 實現(xiàn)PHP多線程異步請求的3種方法
- php異步多線程swoole用法實例
- PHP安裝threads多線程擴展基礎(chǔ)教程
- PHP多線程批量采集下載美女圖片的實現(xiàn)代碼(續(xù))
- php多線程并發(fā)實現(xiàn)方法
- PHP使用CURL實現(xiàn)多線程抓取網(wǎng)頁
- PHP pthreads v3下同步處理synchronized用法示例
相關(guān)文章
PHP 獲取MSN好友列表的代碼(2009-05-14測試通過)
感謝druggo提供代碼 放到首頁只是覺得值得大家研究 等有機會把這代碼裝成jsp的2009-09-09php curl請求接口并獲取數(shù)據(jù)的示例代碼
本篇文章主要介紹了php curl請求接口并獲取數(shù)據(jù)的示例代碼,非常具有實用價值,需要的朋友可以參考下2017-08-08php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息
這篇文章主要給大家介紹了關(guān)于php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2022-01-01DEDE實現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址
這篇文章主要介紹了DEDE實現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址,有需要的朋友可以參考一下。2016-11-11