Webサービスにたくさんリクエストを投げるとき、1つ1つレスポンスを待っていると遅いので、同時に処理した方が良いですね。
(そもそも、WebサービスでAPIをたたく回数は最小限にするべきですが)
PHPならcurl_setoptをつかえば良さそうです。
http://php.net/manual/ja/function.curl-multi-add-handle.php
$mh = curl_multi_init();
$ch = array();
foreach ($urls as $index => $url) {
$ch[$index] = curl_init();
curl_setopt($ch[$index], CURLOPT_URL, $uri);
curl_setopt($ch[$index], CURLOPT_HEADER, $header);
curl_setopt($ch[$index], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($mh, $ch[$index]);
}
$running = null;
do {
curl_multi_exec($mh, $running);
} while($running > 0);
$result = array();
foreach($ch as $curl) {
$result[] = curl_multi_getcontent($curl);
curl_multi_remove_handle($mh, $curl);
}
curl_multi_close($mh);
rubyなら、素直にスレッドを使うのが簡単そうです。
require 'uri'
require 'net/http'
threads = []
datas.each do |data|
threads << Thread.new do
#dataを使ったHTTP処理
end
end
threads.each do |th|
th.join
end