// 通信先ごとにCurl Handleを作り、それを $mh にaddしていく $ch_news = curl_init("http://dailynews.yahoo.co.jp/fc/entertainment/rss.xml"); curl_setopt($ch_news, CURLOPT_RETURNTRANSFER, TRUE); curl_multi_add_handle($mh, $ch_news); // 同様に $ch_music = curl_init("http://magazine.music.yahoo.co.jp/rss/ALL/rss.xml"); curl_setopt($ch_music, CURLOPT_RETURNTRANSFER, TRUE); curl_multi_add_handle($mh, $ch_music); // 同様に $ch_trend = curl_init("http://searchranking.yahoo.co.jp/rss/trend-rss.xml"); curl_setopt($ch_trend, CURLOPT_RETURNTRANSFER, TRUE); curl_multi_add_handle($mh, $ch_trend); // せーので複数の通信を同時実行。whileで全て返ってくるのを待ちます do { curl_multi_exec($mh, $running); } while ( $running ); // 個々のXMLは、それぞれのCurl Handleを指定することで取得できる $rss_news = curl_multi_getcontent($ch_news); $rss_music = curl_multi_getcontent($ch_music); $rss_trend = curl_multi_getcontent($ch_trend); // 後始末 curl_multi_remove_handle($mh, $ch_news); curl_close($ch_news); curl_multi_remove_handle($mh, $ch_music); curl_close($ch_music); curl_multi_remove_handle($mh, $ch_trend); curl_close($ch_trend); curl_multi_close($mh); // リクエストするClientの用意 var client = new HttpClient(); // 非同期リクエスト var news = client.GetStringAsync("http://dailynews.yahoo.co.jp/fc/ente var music = client.GetStringAsync("http://magazine.music.yahoo.co.jp/r var trend = client.GetStringAsync("http://searchranking.yahoo.co.jp/rs // 非同期待機 await Task.WhenAll(new[] { news, music, trend }); // 個々のXMLは変数のResultを指定するだけで取れる Console.WriteLine(news.Result); Console.WriteLine(music.Result); Console.WriteLine(trend.Result); PHPの例は以下のYahooのTech Blogより引用 http://techblog.yahoo.co.jp/architecture/api1_c url_multi/