欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP使用CURL_MULTI實(shí)現(xiàn)多線程采集的例子

 更新時(shí)間:2014年07月29日 10:37:02   投稿:junjie  
這篇文章主要介紹了PHP使用CURL_MULTI實(shí)現(xiàn)多線程采集的例子,CURL_MULTI可以對(duì)HTTP進(jìn)行并發(fā)訪問(wèn),需要的朋友可以參考下

這兩天有一客戶定制了一個(gè)免登錄發(fā)布模塊,因?yàn)樵谀K中需要涉及到很多圖片下載的問(wèn)題,考慮到性能問(wèn)題,所以特別寫了一個(gè)CURL_MULTI遠(yuǎn)程采集網(wǎng)頁(yè)的函數(shù),以方便以后使用,估計(jì)以后都不會(huì)使用原來(lái)的單線程curl函數(shù)去foreach了,其性能對(duì)比很明顯的。同樣獲取我的博客的十個(gè)不同網(wǎng)頁(yè),curl_multi:4.5246081352234,file_get_contents:33.001797914505,將近8倍的效率,可想而知,如果在附件更多的情況下,性能差異就越明顯了,希望對(duì)您有所幫助!

復(fù)制代碼 代碼如下:

<?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;
}

相關(guān)文章

  • Yii全局函數(shù)用法示例

    Yii全局函數(shù)用法示例

    這篇文章主要介紹了Yii全局函數(shù)用法,結(jié)合實(shí)例形式分析了Yii全局函數(shù)的功能、定義與使用方法,需要的朋友可以參考下
    2017-01-01
  • PHP 獲取MSN好友列表的代碼(2009-05-14測(cè)試通過(guò))

    PHP 獲取MSN好友列表的代碼(2009-05-14測(cè)試通過(guò))

    感謝druggo提供代碼 放到首頁(yè)只是覺(jué)得值得大家研究 等有機(jī)會(huì)把這代碼裝成jsp的
    2009-09-09
  • php cc攻擊代碼與防范方法

    php cc攻擊代碼與防范方法

    今天把客戶查找后門的時(shí)候發(fā)現(xiàn)的代碼,特分享下,看到這樣的代碼就是黑客用來(lái)攻擊別人訪問(wèn),不斷訪問(wèn)指定網(wǎng)站,導(dǎo)致網(wǎng)站無(wú)法訪問(wèn),我們的網(wǎng)站就是幫兇了,同時(shí)我們自己的網(wǎng)站或服務(wù)器也會(huì)無(wú)法訪問(wèn),所以一定要注意防范。
    2012-10-10
  • php顯示頁(yè)碼分頁(yè)類的封裝

    php顯示頁(yè)碼分頁(yè)類的封裝

    這篇文章主要為大家詳細(xì)介紹了php封裝一個(gè)顯示頁(yè)碼的分頁(yè)類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • PHP 驗(yàn)證登陸類分享

    PHP 驗(yàn)證登陸類分享

    本文給大家介紹的是用php實(shí)現(xiàn)的用戶登錄與驗(yàn)證的一段代碼,沒(méi)有把登錄和數(shù)據(jù)庫(kù)查詢分開(kāi),有需要的朋友,可以參考學(xué)習(xí)下
    2015-03-03
  • php curl請(qǐng)求接口并獲取數(shù)據(jù)的示例代碼

    php curl請(qǐng)求接口并獲取數(shù)據(jù)的示例代碼

    本篇文章主要介紹了php curl請(qǐng)求接口并獲取數(shù)據(jù)的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-08-08
  • thinkPHP5框架自定義驗(yàn)證器實(shí)現(xiàn)方法分析

    thinkPHP5框架自定義驗(yàn)證器實(shí)現(xiàn)方法分析

    這篇文章主要介紹了thinkPHP5框架自定義驗(yàn)證器實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP自定義驗(yàn)證器的具體定義與使用方法,需要的朋友可以參考下
    2018-06-06
  • php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息

    php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息

    這篇文章主要給大家介紹了關(guān)于php如何根據(jù)IP獲取當(dāng)前經(jīng)緯度以及地域信息的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • PHP中Session引起的腳本阻塞問(wèn)題解決辦法

    PHP中Session引起的腳本阻塞問(wèn)題解決辦法

    這個(gè)問(wèn)題很多做php開(kāi)發(fā)朋友應(yīng)該都有遇到過(guò),一個(gè)啟用了session_start 頁(yè)面,由于執(zhí)行時(shí)間過(guò)長(zhǎng)。導(dǎo)致通一個(gè)用戶訪問(wèn),另外一個(gè)很簡(jiǎn)單的啟用session_start頁(yè)面一直阻塞著。 直到第一個(gè)頁(yè)面執(zhí)行完了。第二個(gè)頁(yè)面才可以讀取。這個(gè)就是,我們常說(shuō)的session阻塞機(jī)制。
    2014-04-04
  • DEDE實(shí)現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址

    DEDE實(shí)現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址

    這篇文章主要介紹了DEDE實(shí)現(xiàn)轉(zhuǎn)跳屬性文檔在模板上調(diào)用出轉(zhuǎn)跳地址,有需要的朋友可以參考一下。
    2016-11-11

最新評(píng)論