simplexmlでアクセス頻度を自制する方法
大量の住所データから緯度経度を取得してデータベースに格納したいです。
そこで、以下のAPIを利用することにしました。
http://www.geocoding.jp/api/
「XML出力までに3~5秒かかりますので、5秒間に1回以上のアクセスは避けてください」とあるため、これに従いたいのですが、どうすればよいでしょうか?
以下のような感じのスクリプトを組むつもりですが、このままだと5秒間に複数回のアクセスが行ってしまうと思われるため。
<?php
$pdo=new PDO("mysql:host=localhost;dbname=dbname","username","password");
foreach($pdo->query("select address from tablebamel")as $value){
$address[]=$value['address'];
}
for($i=0;isset($address[$i]);$i++){
$xml=simplexml_load_file("http://www.geocoding.jp/api/?v=1.1&q=$address[$i]");
$latitude=$xml->coordinate->lat;
$longitude=$xml->coordinate->lng;
$sth=$pdo->query("select*from branches where address='$address[$i]'");
$result=$sth->fetch(PDO::FETCH_ASSOC);
$pdo->query("replace into tablename values($result[id],'$address[$i]',$latitude,$longitude)");
}
?>
お礼
遅れてすみません。ご回答ありがうございます。 > 現在は1日50回を10秒おきにしている これの意味は1日のアクセスを50回程度に抑えて、その1回1回を10秒間隔でアクセスしているという意味でした。 そうでしたら、10秒間隔を守れば、一日に300回ぐらいはアクセスしても、問題はなさそうでしょうか? 特に私のIPからのアクセスブロックなどの処置をされるのが困るため、この点を防ぎたいと考えています。