国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP中巧用curl 并發減少獲取第三方網頁內容時間

王巖威 / 3550人閱讀

摘要:老的訪問方式以及耗時統計耗時耗時秒并發訪問方式以及耗時統計耗時耗時秒帥氣吧整個頁面訪問后端接口的時間節省了一半

前言:

在我們平時的程序中難免出現同時訪問幾個接口的情況,平時我們用curl進行訪問的時候,一般都是單個、順序訪問,假如有3個接口,每個接口耗時500毫秒那么我們三個接口就要花費1500毫秒了,這個問題太頭疼了嚴重影響了頁面訪問速度,有沒有可能并發訪問來提高速度呢?今天就簡單的說一下,利用curl并發來提高頁面訪問速度, 希望大家多指導。

1、老的curl訪問方式以及耗時統計

0) {
        $data = false;
    }
    curl_close($ch);
    return $data;
}
function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
$url_arr=array(
     "taobao"=>"http://www.taobao.com",
     "sohu"=>"http://www.sohu.com",
     "lai18"=>"http://www.lai18.com",
);
$time_start = microtime_float();
$data=array();
foreach ($url_arr as $key=>$val)
{
     $data[$key]=curl_fetch($val);
}
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "耗時:{$time}";
?>

耗時:0.614秒

2、curl并發訪問方式以及耗時統計

 $url) {
        $timeout=2;
        $ch[$nch] = curl_init();
        curl_setopt_array($ch[$nch], array(
            CURLOPT_URL => $url,
            CURLOPT_HEADER => false,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_TIMEOUT => $timeout,
        ));
        curl_multi_add_handle($mh, $ch[$nch]);
        ++$nch;
    }
    /* wait for performing request */
    do {
        $mrc = curl_multi_exec($mh, $running);
    } while (CURLM_CALL_MULTI_PERFORM == $mrc);

    while ($running && $mrc == CURLM_OK) {
        // wait for network
        if (curl_multi_select($mh, 0.5) > -1) {
            // pull in new data;
            do {
                $mrc = curl_multi_exec($mh, $running);
            } while (CURLM_CALL_MULTI_PERFORM == $mrc);
        }
    }

    if ($mrc != CURLM_OK) {
        error_log("CURL Data Error");
    }

    /* get data */
    $nch = 0;
    foreach ($urlarr as $moudle=>$node) {
        if (($err = curl_error($ch[$nch])) == "") {
            $res[$nch]=curl_multi_getcontent($ch[$nch]);
            $result[$moudle]=$res[$nch];
        }
        else
        {
            error_log("curl error");
        }
        curl_multi_remove_handle($mh,$ch[$nch]);
        curl_close($ch[$nch]);
        ++$nch;
    }
    curl_multi_close($mh);
    return  $result;
}
$url_arr=array(
     "taobao"=>"http://www.taobao.com",
     "sohu"=>"http://www.sohu.com",
     "lai18"=>"http://www.lai18.com",
     );
function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
$data=curl_multi_fetch($url_arr);
$time_end = microtime_float();
$time = $time_end - $time_start;
 echo "耗時:{$time}";
?>

耗時:0.316秒 帥氣吧整個頁面訪問后端接口的時間節省了一半

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30258.html

相關文章

  • ionic 旅途-- 一起來填坑

    摘要:在中巧用解決跳轉到第三方平臺時不能回調的問題比如支付在開發中遇到不少的坑,絕大部分解決了但是在我們的中如果跳轉到第三方網站上時,那么問題來了此時我們的是不能監聽到你在其它網站上的事件的,所以當你想要回退到我們自己上時請緊握你的蛋小編在開發這 在ionic中巧用iframe解決跳轉到第三方平臺時不能回調的問題-比如支付 在ionic開發中遇到不少的坑,絕大部分解決了但是在我們的app...

    qieangel2013 評論0 收藏0
  • PHP面試之二:高并發與大數據

    摘要:三態分別是就緒運行阻塞進程的五態模型在三態的基礎上發展而來新建態運行態終止態就緒態等待態線程稱之為輕量級的進程,程序執行流的最小單元。一個進程下有多個線程來完成不同的工作稱之為多線程。 web資源防盜鏈 盜鏈是什么? 為什么要防? 在自己頁面上顯示一些不是自己服務器的資源(圖片、音頻、視頻、css、js等)由于別人盜鏈你的資源會加重你的服務器負擔,所以我們需要防止可能會影響統計 防盜鏈...

    Ashin 評論0 收藏0
  • PHP實現并發請求

    摘要:不支持多線程模式和回調處理,因此內部腳本都是同步阻塞式的,如果你發起一個的請求,那么程序就會阻塞,直到請求返回結果,才會繼續執行代碼。參考資料手冊手冊預定義常量中實現多線程請求詳解每次使用同時并發多少請求合適簡書多線程及原理 后端服務開發中經常會有并發請求的需求,比如你需要獲取10家供應商的帶寬數據(每個都提供不同的url),然后返回一個整合后的數據,你會怎么做呢? 在PHP中,最直觀...

    zhangfaliang 評論0 收藏0
  • javascript塊級作用域處理閉包和釋放內存的垃圾回收

    摘要:然而,引擎很可能雖然這要看具體實現將會仍然將這個結構保持一段時間,因為函數在整個作用域上擁有一個閉包。 內容 平時編寫代碼的時候很少關注細節,對javascript深層也沒具體了解,下面針對平時寫代碼的形式分析、調整完善自己的代碼,這里以一個簡單例子分析js作用域和垃圾回收機制,通過塊級作用域處理一些細節,提升自己代碼性能。 普通案例 在日常中最常見的代碼編寫方式: function ...

    vpants 評論0 收藏0
  • 巧用 Img / JavaScript 采集頁面數據

    摘要:日志服務提供就是為解決以上輕量級埋點采集場景而生,我們可以在分鐘時間內完成埋點和數據上報工作。服務功能包括實時采集與消費。 摘要: 當我們有一個新內容時(例如新功能、新活動、新游戲、新文章),作為運營人員總是迫不及待地希望能盡快傳達到用戶,因為這是獲取用戶的第一步、也是最重要的一步。 點此查看原文:http://click.aliyun.com/m/40929/ 我們發送重要郵件時為...

    sunny5541 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<