問題的引發
在我們平時的程式中有時候會出現同時訪問幾個介面的情況,我們都是用curl進行訪問,而這種訪問一般都是單個、順序訪問的。那麼問題來咯,假如有3個介面,每個介面耗時500毫秒,這樣三個介面就要花費1500毫秒了,這個問題很嚴重,嚴重影響了頁面訪問速度。
解決問題
有沒有可能併發訪問來提高速度呢?今天就簡單的說一下,利用 curl併發來提高頁面訪問速度
看看單個,順序curl訪問方式以及耗時統計
<?php
function curl_fetch($url, $timeout=3)
curl_close($ch);
return $data;
}function microtime_float()
$url_arr=array(
"taobao"=>"",
"sohu"=>"",
"sina"=>"",
);$time_start = microtime_float();
$data=array();
foreach ($url_arr as $key=>$val)
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "耗時:";
?>
以上**執行結果如下:耗時:0.614秒 顯然這是不可取的。來看看併發的效果
curl併發訪問方式以及耗時統計
<?php
function curl_multi_fetch($urlarr=array())
/* wait for performing request */
do while (curlm_call_multi_perform == $mrc);
while ($running && $mrc == curlm_ok) while (curlm_call_multi_perform == $mrc);
}} if ($mrc != curlm_ok)
/* get data */
$nch = 0;
foreach ($urlarr as $moudle=>$node) else
curl_multi_remove_handle($mh,$ch[$nch]);
curl_close($ch[$nch]);
++$nch;
} curl_multi_close($mh);
return $result;
}$url_arr=array(
"taobao"=>"",
"sohu"=>"",
"sina"=>"",
);function microtime_float()
$time_start = microtime_float();
$data=curl_multi_fetch($url_arr);
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "耗時:";
?>
執行後的結果:耗時:0.316秒 很明顯,時間減少了一半 PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...
PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...
PHP使用CURL詳解
curl是乙個非常強大的開源庫,支援很多協議,包括http ftp telnet等,我們使用它來傳送http請求。它給我 們帶來的好處是可以通過靈活的選項設定不同的http協議引數,並且支援https。curl可以根據url字首是 http 還是 https 自動選擇是否加密傳送內容。使用curl的...