天天看點

請求示例代碼_PHP多線程請求示例代碼

請求示例代碼_PHP多線程請求示例代碼

PHP 并發請求 批量請求 Curl

下面代碼對多線程并發請求,和單線程請求進行了對比,明顯多線程快了不少。

<?phpfunction muti_thread_request($nodes){$mh = curl_multi_init();$curl_array = array();foreach($nodes as $i => $url){$curl_array[$i] = curl_init($url);curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, true);curl_multi_add_handle($mh, $curl_array[$i]);}$running = NULL;do {usleep(10000);curl_multi_exec($mh,$running);} while($running > 0);$res = array();foreach($nodes as $i => $url){$res[$url] = curl_multi_getcontent($curl_array[$i]);}foreach($nodes as $i => $url){curl_multi_remove_handle($mh, $curl_array[$i]);}curl_multi_close($mh);return $res;}function culrTest($arr){foreach($arr as $url){$ch = curl_init();$ch = curl_init($url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);$result = curl_exec($ch);echo "
           
";print_r($result);}}$s = microtime(true);$a = array('http://www.baidu.com','http://www.jd.com','https://www.bulgari.cn/','https://bitbucket.org/','http://php.net/','http://php.net/manual/en/function.curl-multi-init.php',);print_r(muti_thread_request($a));//9.36sculrTest($a);//27s$e = microtime(true);echo ($e - $s);