ホームページ  >  記事  >  バックエンド開発  >  PHP の Curl ループで複数の URL をリクエストし、マルチスレッドで複数の URL をリクエストします。

PHP の Curl ループで複数の URL をリクエストし、マルチスレッドで複数の URL をリクエストします。

WBOY
WBOYオリジナル
2016-06-13 12:57:58941ブラウズ

PHP の Curl ループで複数の URL をリクエストし、マルチスレッドで複数の URL をリクエストします

第一种:循环请求
$sr=array(url_1,url_2,url_3);
foreach ($sr as $k=>$v) {
	$curlPost=$v.'?f=传入参数';
	$ch = curl_init($curlPost) ; 
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回   
	curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回   
	$data = curl_exec($ch) ;
	echo $k.'##:'.$data.'<br>';
}
curl_close($ch);

2 番目のタイプのマルチスレッド リクエスト

$sr=array(url_1,url_2,url_3);

$mh = curl_multi_init();
     foreach ($sr as $i => $url) {
      $curlPost=$url.'?f=%2Fpipefile%2Fskincss%2Fskincss_1356490012_1.zip%40%2Fskincss%2Fimages%2Fskincss_1356490012_1.jpg';
      $conn[$i]=curl_init($curlPost);
      curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,1);
      curl_multi_add_handle ($mh,$conn[$i]);
     } 
     do {
      $mrc = curl_multi_exec($mh,$active);
     } while ($mrc == CURLM_CALL_MULTI_PERFORM);
     while ($active and $mrc == CURLM_OK) {
      if (curl_multi_select($mh) != -1) {
       do {
        $mrc = curl_multi_exec($mh, $active);
       } while ($mrc == CURLM_CALL_MULTI_PERFORM);
      }
     } 
     foreach ($sr as $i => $url) {
      $res[$i]=curl_multi_getcontent($conn[$i]);
      curl_close($conn[$i]);
     }
  var_dump($res);

簡単なテストの結果、4 つの異なる URL が同時にリクエストされた場合、ループの処理速度がマルチスレッドよりも速いことが判明しました。この問題は検証する必要があります。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。