mysql - 为什么我的表格需要这么长时间才能加载

标签 mysql google-places-api

我有一个网站要向用户展示附近的商家。它使用 Google API 来执行此操作。它首先使用雷达搜索抓取附近的商家,抓取 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 查询从数据库中选择所有匹配的记录,而不是一次选择一个,并且您可以插入所有被发现丢失的记录也可以使用单个查询。

最后,如果某些东西很慢,请使用分析器找出它慢的原因;它比询问互联网更快、更可靠。

关于mysql - 为什么我的表格需要这么长时间才能加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39541778/

相关文章:

php/mysql elseif 挑战

java - Hibernate不保存对象

javascript - 为什么指定其他类型时 GooglePlacesAPI 自动完成会返回场所?

android - 在 Android 中使用 Google Maps API 显示当前位置和附近地点以及两个地点之间的路线

mysql - 如何在一个巨大的 MYSQL 数据库表中插入一个新列?

MySql 错误 1005 errno 22

php - 数据库中的日期是否在今天和上周之间

javascript - 当我尝试将 google place autocomplete API 与 Axios 一起使用时出现 CORS 错误

google-places-api - Google Places API place_id字段长度

javascript - 通过自动完成服务获取邮政编码