duanqiao1961 2015-12-12 15:45
浏览 61
已采纳

调用google指令api时,PHP在mysql循环中崩溃

I am running the following function within a MySQL search query which generally find around 100 results. the function retrieves distance between two location using google api.

the problem looks like the loop is crashing the script anything over 10 results.

is there any way to fix this issue?

pause for the google call back?

any suggestion helpful.

function get_driving_information($start, $finish, $raw = false)
{
    if(strcmp($start, $finish) == 0)
    {
        $time = 0;
        if($raw)
        {
            $time .= ' seconds';
        }

        return array('distance' => 0, 'time' => $time);
    }

    $start  = urlencode($start);
    $finish = urlencode($finish);

    $distance   = 'unknown';
    $time       = 'unknown';

    $url = 'http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$finish.'&sensor=false';
    if($data = file_get_contents($url))
    {
        $xml = new SimpleXMLElement($data);

        if(isset($xml->route->leg->duration->value) AND (int)$xml->route->leg->duration->value > 0)
        {
            if($raw==true)
            {
                $distance = (string)$xml->route->leg->distance->text;
                $time     = (string)$xml->route->leg->duration->text;
            }
            if($raw=="miles")
            {
                $distance = (string)$xml->route->leg->distance->value / 1000 / 1.609344;
                $distance = number_format($distance,1)." miles";
                $time     = (string)$xml->route->leg->duration->text;
            }
            else
            {
                $distance = (int)$xml->route->leg->distance->value / 1000 / 1.609344; 
                $time     = (int)$xml->route->leg->duration->value;
            }
        }
        else
        {
            throw new Exception('Could not find that route');
        }

        //return array('distance' => $distance, 'time' => $time);
        return $distance;
    }
    else
    {
        throw new Exception('Could not resolve URL');
    }
}
  • 写回答

1条回答 默认 最新

  • douchuituo3032 2015-12-12 15:50
    关注

    there is a limit 10 requests per second, check more about limits here: https://developers.google.com/maps/documentation/directions/usage-limits

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式