ユーザーの近くにあるお店やサービスを紹介するサイトがあります。これを行うためにGoogleAPIを使用します。最初にレーダー検索を使用して近くのお店を取得し、place_idを取得してデータベースに保存し(後で必要になります)、次に場所IDを使用して場所の詳細を取得します。特定の基準が満たされると、結果が表に表示されます。ただし、読み込みに時間がかかるため、その理由を解明しようとしています。情報が多すぎて、それで問題ない場合は問題ありませんが、コード内で何かを実行して、必要以上に速度を落とすように感じています。
<?php
$xml = simplexml_load_file("https://maps.googleapis.com/maps/api/place/radarsearch/xml?location=39.53,-89.33&radius=10000&type=establishment&key=MYKEY") or die("Error: Cannot create object");
foreach($xml->result as $get)
{
if($i==7) break;
$xml2 = simplexml_load_file("https://maps.googleapis.com/maps/api/place/details/xml?placeid=" . $get->place_id . "&key=MYKEY") or die("Error: Cannot create object");
$sql = "SELECT * FROM Places WHERE GoogleID = '".$get->place_id."'";
$records = $conn->query($sql);
$grab = $records->fetch_assoc();
if($records->num_rows > 0)
{
//yay
}
Else
{
$MakeNew = "INSERT INTO Places (GoogleID, ConfirmedHiring) VALUES ('".$get->place_id."', 'No')";
if(mysqli_query($conn, $MakeNew))
{
$records = $conn->query($sql);
$grab = $records->fetch_assoc();
}
}
foreach($xml2->result->address_component as $item){if($item->type == "locality"){$placecity = $item->long_name;}}
echo "<tr>";
echo "<td data-title='Business'>" . $xml2->result->name . "</td>";
echo "<td data-title='Location'>" . $placecity . "</td>";
echo "<td data-title='Confirmed Hiring'>" .$grab["ConfirmedHiring"]. "</td>";
echo "</tr>";
$i++;
}
?>
レーダー検索の代わりに近くの検索を使用した場合は、後で場所の詳細を個別に取得する必要はありません。結果にはすでにすべての詳細が含まれています。それがオプションではなく、レーダー検索を実行する必要がある場合は、少なくともすべての詳細要求を並行して実行できます。
同様に、一致するすべてのレコードをIN
一度に1つずつ選択する代わりに、クエリを使用してDBから選択できます。また、欠落していることが判明したすべてのレコードを1つのクエリで挿入することもできます。
最後に、何かが遅い場合は、プロファイラーを使用して、なぜ遅いのかを調べます。インターネットに尋ねるよりも速くて信頼性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加