av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP中巧用curl 并發(fā)減少獲取第三方網(wǎng)頁(yè)內(nèi)容時(shí)間

瀏覽:4日期:2022-09-13 13:35:52
前言:

在我們平時(shí)的程序中難免出現(xiàn)同時(shí)訪問(wèn)幾個(gè)接口的情況,平時(shí)我們用curl進(jìn)行訪問(wèn)的時(shí)候,一般都是單個(gè)、順序訪問(wèn),假如有3個(gè)接口,每個(gè)接口耗時(shí)500毫秒那么我們?nèi)齻€(gè)接口就要花費(fèi)1500毫秒了,這個(gè)問(wèn)題太頭疼了嚴(yán)重影響了頁(yè)面訪問(wèn)速度,有沒(méi)有可能并發(fā)訪問(wèn)來(lái)提高速度呢?今天就簡(jiǎn)單的說(shuō)一下,利用curl并發(fā)來(lái)提高頁(yè)面訪問(wèn)速度, 希望大家多指導(dǎo)。

1、老的curl訪問(wèn)方式以及耗時(shí)統(tǒng)計(jì)

<?phpfunction curl_fetch($url, $timeout=3){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $errno = curl_errno($ch); if ($errno>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', 'sina'=>'http://www.sina.com.cn',);$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 '耗時(shí):{$time}';?>

耗時(shí):0.614秒

2、curl并發(fā)訪問(wèn)方式以及耗時(shí)統(tǒng)計(jì)

<?phpfunction curl_multi_fetch($urlarr=array()){ $result=$res=$ch=array(); $nch = 0; $mh = curl_multi_init(); foreach ($urlarr as $nk => $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 networkif (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', 'sina'=>'http://www.sina.com.cn', );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 '耗時(shí):{$time}';?>

耗時(shí):0.316秒 帥氣吧整個(gè)頁(yè)面訪問(wèn)后端接口的時(shí)間節(jié)省了一半

原文:http://www.searchtb.com/2010/12/using-multicurl-to-improve-performance.html

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 福利社午夜影院 | 99亚洲精品视频 | 国产精品久久久久久52avav | 日韩中文字幕av | 日韩二区 | 欧美精品日韩 | 狠狠干天天干 | 521av网站| 最新国产精品 | 9久久婷婷国产综合精品性色 | 亚洲黄色av | 成人免费视频网站在线观看 | 国产女人精品视频 | 欧美色影院 | 一区二区高清在线观看 | 久久国产麻豆 | 中国黄色在线视频 | 亚洲成人免费 | 最新中文字幕久久 | 91亚洲免费| 国产精品久久久久久 | 亚洲精品成人在线 | 免费在线观看av网址 | 免费黄视频网站 | 美女视频h | 亚洲一区精品在线 | 91一区二区在线观看 | 手机av在线 | 国产在线a| 久久久久久久久久久91 | 亚洲精品日韩在线观看 | 成人在线精品视频 | 伊人网站 | 亚洲一区不卡在线 | 国产一区二区精 | 在线免费观看视频黄 | 日韩欧美在线播放 | 精品在线一区二区 | 黄色大片免费播放 | 亚洲第一视频网站 | 国产精品久久久久久久免费观看 |